alan-turing-institute__autspaces METASEP

00-project-documentation/platform-design/platform-design/design-research/Personas/README.md METASEP
# AutSPACEs Persona README 

## What is a Persona
- User personas are fictional users that represent the needs of user groups. 
- Identifying user personas can help us better understand the needs and pain points of users.
- You can read more information on Personas at the Adobe website [here](https://xd.adobe.com/ideas/process/user-research/putting-personas-to-work-in-ux-design/)

## AutSPACEs Personas
- For AutSPACEs, we have identified 5 user groups: **austistic users, coders, researchers, non-autistic users**,and **decision makers**. 
- These user groups have allowed us to develop 5 Personas:
    - [Ali](Ali.md)
    - [Cameron](Cameron.md)
    - [Kendall](Kendall.md)
    - [August](August.md)
    - [Jesse](Jesse.md)

## How to contribute 
- You can suggest a new Persona by creating an [Issue](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CONTRIBUTING.md#where-to-start-issues), or submitting a [Pull Request](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CONTRIBUTING.md#where-to-start-issues). For information on how to do this please refer to our [Contributors Guidelines](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CONTRIBUTING.md). If you do this please follow the template [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/sophia-relativelink-test/platform-designs/design-research/Personas/Persona-Template.md) and try to use gender neutral names and pronouns when creating a persona. 
- You can add suggestions to existing Personas by opening an Issue and linking to the Persona file you would like to make suggestions for. Refer to the [Contributors Guideline](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CONTRIBUTING.md#where-to-start-issues) for information on how to open an Issue. 

00-project-documentation/platform-design/platform-design/design-research/Personas/Persona-Template.md METASEP
# Persona Name:

### Short Biography 
> - this is a short biography about the Persona
> - it should be specific to the autspace project, what their knowledge base is, what requirements they have, what their expectations are
> - When creating the persona, think about 
    > - (1) what the overall goals of AutSPACEs are (you can review this slide [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/images/Whitaker_OpenInnovationAutistica_November2019.jpg) from one of Kirstie Whitaker's talks which discuss the goals of the project)
    > - (2) what archetypes of people may be interested in using the platform

### Goals and Motivations
| **Goals** | **Motivations** | 
| -------- | -------- | 
| a goal is something that someone can achieve   | a motivation is why someone wants to achieve their goal  | 

00-project-documentation/platform-design/platform-design/design-research/Personas/Kendall.md METASEP
# Kendall 

### Short Biography
Kendall works as a community manager for an international NGO in the Netherlands. Kendall has no knowledge about open source, citizen science, or open science. They have heard about participatory projects before, but have never particiapted. They heard about AutSPACEs from Autistica through a forum. 

Kendall wants to learn from the experiences of autistic individuals so they pitch for policy changes in their organization that will enable building and interior design, working policies, and equipment support for their employees. 

### Goals and Motivations
| **Goals** | **Motivations** | 
| -------- | -------- | 
| To read first hand experiences from autistic individuals |Better understand what kind of problems people with autism may face in their daily life (:thought_balloon: internal motivation)|
|Understand how AutSPACEs platform works and its impact |Advises organizations in building a safe and supportive work environment for colleagues with autism (:briefcase: external motivation) | 

00-project-documentation/platform-design/platform-design/design-research/Personas/Jesse.md METASEP
# Jesse

### Short Biography
Jesse is not autistic but is a carer to Erin, who is an autistic individual. Erin and Jesse have worked together and decided to share some of Erin's experiences on AutSPACEs. Jesse is also hoping to find ideas for how to better support Erin.  

### Goals and Motivations
| **Goals** | **Motivations** | 
| -------- | -------- | 
| View experiences and search for experiences that shared by people whose situations are similar to Erin | Get ideas for adaptive techniques to better support Erin
| Help Erin's experience to be represented |Contributes to the knowledge base on autism and sensory processing|
Support Erin in connecting with a supportive community of peers | Help Erin feel like they are part of a community | 

00-project-documentation/platform-design/platform-design/design-research/Personas/Cameron.md METASEP
# Cameron

### Short Biography
Cameron was diagnosed with autism in their teens. They have been working closely with and contributing to AutSPACEs for more than a year. They are interested in political science and acts as an active member for multiple neurodiversity communities. 

They work as a moderator for AutSPACEs platform.

### Goals and Motivations
| **Goals** | **Motivations** | 
| -------- | -------- | 
|Uses AutSPACEs platform to document sensory experiences and adaptive techniques weekly to benefit viewers with similar experiences|Gains a better understanding of their own experience and gets new strategy ideas from  others who have similar experiences
|Be able to keep a self log of their own sensory experiences| Track patterns in their experiences and understand themselves better |
|Introduces AutSPACEs platform to other neurodiversity communities | To grow the AutSPACEs community and have more experiences be shared |
Use AutSPACEs moderator page to select experiences for publication based on whether they follow code of conduct or not | Builds a safe and supportive autistic community|
00-project-documentation/platform-design/platform-design/design-research/Personas/August.md METASEP
# August 

### Short Biography
August works as a researcher in a data science lab and is part of the research team for AutSPACEs. Their background is in data science and human resources. 

August also works as a developer for the platform, as well as a public speaker in promoting participatory projects on autism research. 

### Goals and Motivations
| **Goals** | **Motivations** | 
| -------- | -------- | 
|Conduct keyword researches based on their interests in shared experiences databases |Make contributions to the current autism researches 
|Contact the core team for research discussions |Educates neurotypical people to better support their autistic friends, family and colleagues|
View data consented to be used for research purposes | To understand what data can and can't be included in a research project |
To read first hand experiences of autistic individuals and request research data | Make contributions to autism research that prioritizes the needs of autistic individuals
| Understand how the AutSPACEs project was developed | Use/draw upon AutSPACEs resources such as code and project managemeent resource to create own open source project

00-project-documentation/platform-design/platform-design/design-research/Personas/Ali.md METASEP
# Ali 

### Short Biography 
Ali was diagnosed with autism and depression last year during COVID. They were struggling with their work and life recently and is keen on finding a community to support them. They have came across AutSPACEs through a random online search. 

Ali has no knowledge in participatory projects. They are interested in AutSPACEs community. They wants to contribute but is afraid of technology, like how to use GitHub. They do not use text based input systems and needs guidance in writing experiences out.

### Goals and Motivations

| **Goals** | **Motivations** | 
| -------- | -------- | 
|Finds solutions for unpleasant sensory experiences|Get to know autism better and adaptive techniques shared by other members
|Knows how to explain people around about their autism and how they experience the world|Shares adaptive techniques with their neurotypical friends so their friends can be better informed|
|Joins an autism community to feel more understood and supported|Contributes to an autism community


00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week_10.md METASEP
# Week 10 (9th August - 15th August)

**Done**

* Took up issue #157 1 regarding integration of the view experiences page
* Issue that I made for my_stories got reviewed and verified and it’s taken up by another contributor
* Completed half of my GSoC work report

**Planned**

* Complete work report

**Blockers**

None.


00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week9.md METASEP
# Week 9 (2nd August - 8th August)

**Done**

* Made a couple of changes in PR [#151](https://github.com/alan-turing-institute/AutSPACEs/pull/151)
* Made an issue for Milestone 3 regarding integration of the my_stories page

**Planned**

* Start planning the GSoC work report
* Wrap up any pending work

**Blockers**

None.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week8.md METASEP
# Week 8 (26th July - 1st August)

**Done**

* Pushed PRs [#146](https://github.com/alan-turing-institute/AutSPACEs/pull/146), [#147](https://github.com/alan-turing-institute/AutSPACEs/pull/147), [#143](https://github.com/alan-turing-institute/AutSPACEs/pull/143)
* Started working on creating an issue for integrating the View Experiences page for Milestone 3
* Had productive discussions on Open Humans and integrating the page with the backend.

**Planned**

* Complete writing up issue on View Experiences
* Start looking into the moderation pages for the site

**Blockers**

None.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week7.md METASEP
# Week 7 (19th July - 25th July)

**Done**

* Completed pushing changes to PR [#117](https://github.com/alan-turing-institute/AutSPACEs/pull/117) and [#116](https://github.com/alan-turing-institute/AutSPACEs/pull/116) and got merged
* Started working on issue [#138](https://github.com/alan-turing-institute/AutSPACEs/issues/138)
* Had productive discussions on moderation and decided how we’d be starting Milestone 3

**Planned**

* Complete issue #138
* Take up issues in Milestone 3

**Blockers**

None.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week6.md METASEP
# Week 6 (12th July - 18th July)

**Done**

* Discussed about what the moderation process will be on site, how the moderators will be assigned, and what kind of communication will the moderator have with the user. It was decided to move the sign up process to Milestone 3
* Completed first GSoC evaluation
* Worked on PR [#117](https://github.com/alan-turing-institute/AutSPACEs/pull/117) and [#116](https://github.com/alan-turing-institute/AutSPACEs/pull/116)

**Planned**

* Push final changes to both PRs
* Start adding documentation for the code

**Blockers**

None.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week5.md METASEP
# Week 5 (5th July - 11th July)

**Done**

* PRs #114 and #115 got merged.
* Integrated the pages of the site and created an MVP.
* Presented the MVP to the autistic community in yesterday’s community call and got some feedback.

**Planned**

* Start integrating the sign up and moderation aspects which were still under development by their respective contributors.
* Start adding documentation for the code
* Start looking into Milestone 3

**Blockers**

None.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week4.md METASEP
# Week 4 (28th June - 4th July) 

**Done**

* Made changes in PR [#114](https://github.com/alan-turing-institute/AutSPACEs/pull/114) and [#115](https://github.com/alan-turing-institute/AutSPACEs/pull/115) after review by James. They should be merged after James gives one final review.
* Added some items to checklist in issue #119 and set a date to show the MVP to the community.

**Planned**

* Present MVP to the community
* Add documentation for the code
* List feedback from the community and make changes

**Blockers**

Missed out on a bit of time due to side effects from the vaccine. Will be covering up remaining work this weekend.


00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week3.md METASEP
# Week 3 (21st June - 27th June)
This week I integrated my pages into Django where now you can enter experiences through that page and it will be stored in a local database for now. The landing page for now contains the sign in button which directs the user to Open Humans for project authorisation. By the end of this week, we should have an MVP of the site up and running.

My plan for next week is to ensure that MVP is set up and presented to the community in the week after.

One blocker I had was to completely finalise on a definite sign up flow for the site. I would be talking to Bastian who is a part of Open Humans to get some guidance on how to go about this and also get that finalised by next week.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week2.md METASEP
# Week 2
This week I completed making the Share Experiences Page according to the simplified wireframes and sent a [PR](https://github.com/alan-turing-institute/AutSPACEs/pull/114)
I also tried integrating the landing page into the site and connecting it with the existing sign in authorisation to Open Humans which worked. The View Experiences page handled by another contributor had a couple of issues regarding Bootstrap. I’ve helped her out with what needs to be done so that can be ready to integrate into the site. In addition to this, I helped other new contributors with building the site locally and explaining the entire code base to them so that they know where exactly to contribute. As of now, we’d almost be completing Milestone 2 and we’ll be starting Milestone 3.

My plan for next week is to integrate all the static pages from Milestone 2 into the site so that I have the basic user flow in place. I will also create a small basic guide for Bootstrap in the repository for beginners to refer to it while contributing as instructed by the community manager.

As of this week, no blockers have popped up.
00-project-documentation/communication/applications/GSoC/AR-weekly-updates/week1.md METASEP
# Week 1
This week I completed working on the landing page for the AutSPACEs website with reference to the simplified wire frames created with the needs of the autistic people in mind. I also pushed my work to the AutSPACEs repository. In addition to this, I attended a platform development co-working session where I explained to the new contributors how to solve issues from the repo and how the backend database Open Humans works. I also helped some contributors set up docker on their machine and build the website on the computer. I’ve also started working on the Share Experiences page.

My plan for next week is to complete the Share Experiences page and integrate the pages made by me and another contributor into Django to implement the user flow of the website. I would also want to complete other static pages like the My Stories page which is part of Milestone 2 which we trying to complete as soon as possible.

As of now, the only blocker I’ve faced is trying to build the documentation on my machine. There was an issue with installing a new version of Python which stopped my terminal from opening. However, I was able to fix that issue but had to revert back to my previous version. The documentation, unfortunately needs that new Python version to run a package called poetry which installs dependencies to build the documentation. I talked a lot to the lead developer regarding this and I’m planning to try using pyenv to do this. However, the documentation build isn’t a major priority as of now as the main code needs to be written first. I will definitely try pyenv later to see if that fixes the issue.
00-project-documentation/communication/applications/GSoC/AR-GSoC-final-report/README.md METASEP

GSoC Work Report - Building a Working Prototype for the AutSPACEs website
===

## Table of Contents
* <a href="#about-me">About Me</a>  
* <a href="#overview">Overview</a>
* <a href="#details-on-pages-developed">Details on Pages Developed</a>
* <a href="#major-pull-requests">Major Pull Requests</a>
* <a href="#issues-createddetails-added">Issues Created/Details Added</a>
* <a href="#reviewed-prs">Reviewed PRs</a>
* <a href="#reflections">Reflections</a>
* <a href="#future-work">Future Work</a>
* <a href="#conclusion">Conclusion</a>


## About Me
Hi! I'm Anoushka Ramesh, a Computer Science undergraduate from India studying at Amrita Vishwa Vidyapeetham, Amritapuri. During Google Summer of Code 2021, I've been an active contributor to AutSPACEs where I worked on building a working prototype of their website. 


## Overview
AutSPACEs is a participatory, citizen science project aiming to develop a platform which gathers the experiences of autistic people and how their sensory processes are impacted whilst navigating public environments. This will create a qualitative dataset that serves two purposes:

* Contribute to making the world more inclusive of autistic people by urging policy-makers to make changes based on evidence and recommendations from a large number of lived experiences.
* Educate non-autistic people on how they can be better allies for autistic individuals and destigmatize autism in our society.

AutSPACEs is entirely open source and involves a diverse community of autistic collaborators, platform developers and project managers. It focuses on the reproducibility of data and aids researchers to progress in the field of autism. 

This project aims to build and implement a working prototype of the AutSPACEs website in collaboration with the autistic community. The approach to this project would be to:

* Solve issues from milestones [2](https://github.com/alan-turing-institute/AutSPACEs/milestone/2?closed=1) and [3](https://github.com/alan-turing-institute/AutSPACEs/milestone/7) which aim to increase the accessibility of the website and make it into a minimum viable product.
* Test and review PRs to ensure that they meet their purpose.
* Make appropriate documentation for the code.
* Send the final working prototype to the autistic community for feedback and make additonal issues based on it.

### Changes in the Project Plans
* [Milestone 2](https://github.com/alan-turing-institute/AutSPACEs/milestone/2?closed=1) became the primary focus of the project i.e. making an MVP of the website and delivering it to the autistic community for feedback.
* [Milestone 3](https://github.com/alan-turing-institute/AutSPACEs/milestone/7) changed to integrating the website with Open Humans - a backend database that stores all user experiences.
* Implementing accessibility of the website got shifted to [Milestone 4](https://github.com/alan-turing-institute/AutSPACEs/milestone/5).


## Details on pages developed
The first priority of the project was to develop the static pages for the website with reference to the simplified wireframes previously created. 

### Landing Page - Issue [#15](https://github.com/alan-turing-institute/AutSPACEs/issues/15)
This is the landing page I developed with reference to its [simplified wireframe](https://www.figma.com/file/HxqTSdeyAUNMualnBV0PET/Autspace-(WIP)?node-id=172%3A641).

![Landing Page](https://i.imgur.com/KO8nMK1.png)

The navbar contains:
* **Home** - This navigates the user to the landing page if they're logged out and to the home page if they're logged in.
* **View Experiences** - This navigates the user to the page where all the public experiences are displayed.

The **sign in** button directs the user to the Open Humans authorisation page and is linked to `OpenHumansMember.get_auth_url()`

The **sign up** button enables the user to create an account on AutSPACEs after filling out a questionnaire to check whether they're autistic or not. They will then be directed to Open Humans where they can create an account to authorize the AutSPACEs project to use their data.
    

### Share Experiences Page - Issue [#16](https://github.com/alan-turing-institute/AutSPACEs/issues/16)
This is the share experiences page I developed with reference to the first frame of the [simplified wireframe](https://www.figma.com/file/HxqTSdeyAUNMualnBV0PET/Autspace-(WIP)?node-id=128%3A0).
![Share Experiences](https://i.imgur.com/U0uA7Tx.png)

When the user is signed in, this is the extended navbar that they can see which contains:
* **Home** - This navigates the user to the landing page if they're logged out and to the home page if they're logged in.
* **View Experiences** - This navigates the user to the page where all the public experiences are displayed.
* **Moderate Experiences** - This is only visible to moderators where they can approve or decline experiences according to the AutSPACEs Code of Conduct.
* **Share Experiences** - This navigates the user to a page where they can share their experiences and decide to send it for research or make it visible to the public.
* **My Stories** - This navigates the user to a page where they can view their personal experiences and view the moderation status on each experience.
* **Logout** - The user logs out of their account.

On submitting their experience, the site generates a JSON file which is stored in the Open Humans database for researchers and moderators to use.

Below is an example of one of the Open Humans database JSON files:
``` gherkin=
{
 "text": "*Whenever I go on public transport, especially at peak times, it can be quite challenging and it is very off-putting,I would like to avoid it completely to travel during peak times.*",
 "wish_different": "*If I could change one thing about the use of public transport I go on, it would probably be a higher frequency of trains, maybe every 8 or 10 minutes, so there are not so many people that go on each train.*",
 "timestamp": "2021-06-06 18:58:22.958543"
}

```

## Major Pull Requests
Below is a list of all major pull requests that I created that were merged into the code:  
[#114](https://github.com/alan-turing-institute/AutSPACEs/pull/114) - **Add Landing Page**  
[#115](https://github.com/alan-turing-institute/AutSPACEs/pull/115) - **Add Share Experiences Page**  
[#143](https://github.com/alan-turing-institute/AutSPACEs/pull/143) - **Navigation: Share Experiences**  
[#146](https://github.com/alan-turing-institute/AutSPACEs/pull/146) - **Navigation: Home Page**  
[#147](https://github.com/alan-turing-institute/AutSPACEs/pull/147) - **Navigation: View Experiences**  
[#151](https://github.com/alan-turing-institute/AutSPACEs/pull/151) - **Navigation: View Experiences (Revert Changes)**

### Other PRs
[#116](https://github.com/alan-turing-institute/AutSPACEs/pull/116) - **Adding Experiences Page**   
I redirected the page to the `list_public_experiences` view as initially the old pages were getting rendered instead of the newly created ones.  

[#117](https://github.com/alan-turing-institute/AutSPACEs/pull/117) - **Adding Moderation Page**  
I redirected the page to the `list_moderate_public_experiences` view because the new pages weren't getting rendered on the screen.

### Commits
Here's the link to my list of commits - https://github.com/alan-turing-institute/AutSPACEs/commits?author=anoura12&before=05f67b39a355c4796c2e174152fe98e5d157b904+35

## Issues Created/Details Added
These are the issues I created and added details to for Milestone 2 and Milestone 3 after learning how to scope a task.

[#153](https://github.com/alan-turing-institute/AutSPACEs/issues/153) - **Render a User's Personal Experiences in the `My Stories` Page**   
[#119](https://github.com/alan-turing-institute/AutSPACEs/issues/119) - **Integrate all pages together to produce final MVP**

## Reviewed PRs
This is one of the skills I developed with the project where I liased with other developers to improve their PRs and provide feedback on what changes they could make.

[#116](https://github.com/alan-turing-institute/AutSPACEs/pull/116) - **Adding Experiences Page**  
[#117](https://github.com/alan-turing-institute/AutSPACEs/pull/117) - **Adding Moderation Page**

## Reflections
### Community Bonding to First Evaluation
* I got introduced to the team in my very first AutSPACEs community call where I understood the overall workflow of the project and how new contributors can solve issues. 
* The project had a lot of elements which seemed overwhelming at first. So, I used Slack at my disposal and went around asking various questions to not only my mentors but also other people related to the project.
* After talking to the lead developer, I took up my [first issue](https://github.com/alan-turing-institute/AutSPACEs/issues/15) which was creating the landing page with Bootstrap according to simplified wireframes designed earlier.
* I took up another [issue](https://github.com/alan-turing-institute/AutSPACEs/issues/16) related to creating the Share Experiences page.
* Every alternate week, we have our AutSPACEs community calls where I co-facilitated the platform development breakout room with Sowmya who was another contributor. I gave updates on the project to the team and clarified their doubts and questions regarding the source code and project repository.
* During the development co-working sessions and community calls, I helped other contributors with their issues and the website setup with Docker. I also briefly explained how the backend database(Open Humans) worked with the site.
* After all the pages were done, I set up the MVP and presented it to the entire AutSPACEs community during one of our community calls where I got feedback on how we could further improve upon the site.

### First Evaluation to Second Evaluation
* During this period, Sowmya's internship came to an end. From then onwards, I facilitated the entire development breakout room and brought about effective discussions on how to progress AutSPACEs through Milestone 2.
* I took up three issues related to the [navigation](https://hackmd.io/gKc4yWQgTh2eGf8oCbm7bA?both#Major-Pull-Requests) of the website and sent PRs which got merged.
* We finally completed Milestone 2 after my final [PR](https://github.com/alan-turing-institute/AutSPACEs/pull/151) was merged.
* We had key discussions on the integration of Open Humans and how to proceed with Milestone 3 in our community calls.
* I scoped and created an issue for Milestone 3 about rendering a user’s personal experiences on the my_stories page after learning about project scoping. 

Here are my status updates for each week - [Weekly Status Updates](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/applications/GSoC/AR-weekly-updates)

### Lessons Learnt
I had a wonderful experience with this project and learned a lot  in these 3 months of GSoC. Here are some of the main skills I acquired during this time:

* **Git** - Prior to my GSoC journey, my knowledge of GitHub was basic, however, due to the needs of the programme, I developed key understanding and practical knowledge of using Github to ensure efficient project management, task completion and reproducibility. Learning how to resolve merge conflicts, cherry picking, contributing to another branch, splitting a PR into two separate ones are just some of the Git skills I learnt both independently and from others. I also learnt how to make concise commit messages rather than clubbing all the changes in one commit.
* **Project Scoping** - This is one of the most important skills I acquired in the project. This included creating an abstract list of requirements for a particular page in the site based on a page’s different states, what data it receives and what output it displays. Getting the correct level of technical detail is a key skill that I developed to ensure the tasks was accurately scoped. This was a personal goal of mine to achieve and therefore I'm glad to have had the exposure and guidance from other contributors on the project.
* **Effective Communication** - My ability to effectively communicate with other contributors improved significantly over these three months. I actively sought and took on opportunities during my meetings and community calls to work on these skills such as explaining a particular concept of the project, helping a contributor with their issue or presenting my work to the community. I ensured my communication techniques accurately portrayed the audience and their needs. I also developed the ability to ask precise, effective and thought-provoking questions.
* **Reviewing Pull Requests** - I reviewed other PRs and gave concise feedback on what changes could be incorporated. 
* **Guiding New Contributors** - I helped the new new contributors take up issues in the project repository and came on calls with them individually to address their queries.

## Future Work
Currently, the project stands at Milestone 3 which involves the integration of the site with Open Humans. I will be continuing with the project to ensure that this integral stage of the website is complete. I will also be helping Kirstie and Lotty by aiding other contributors with their work and progressing the website through different milestones.


## Conclusion
I had a wonderful experience with AutSPACEs and the autistic community during these three months. The community was very welcoming when I first joined AutSPACEs. I really loved the collaborative atmosphere in the community calls where I was free to express my ideas and interests in the project.

My mentors, Kirstie Whitaker and Charlotte Coupat, have constantly guided me throughout the project and helped me grow as a person. Before AutSPACEs, my knowledge of computer science was rather limited to academics. I was unknown to the world of open source and how organisations functioned in the real world. This project opened my eyes to the various possibilties open source has to offer. It gave me the opportunity to apply my existing knowledge to help create a better world for autistic individuals. I also understood how an organisation functions and recieved hands-on experience while working with project managers and platform developers.

I am highly grateful to the project’s lead developer, James Kim, for teaching me good coding practices, Git skills and project scoping. As I kept contributing to the code and solving issues, my initial apprehension in sending a PR in hopes of not breaking the site, disappeared. I also learnt new principles like DRY(Don't Repeat Yourself) and creating concise commit messages.

All in all, I thoroughly enjoyed my time here and would recommend AutSPACEs to anyone seeking for a good learning experience and access to one of the best communities I have ever seen.























tests/test_apps/test_main/test_models/test_migrations/test_blog_post_migrations.py METASEP
import pytest
from django_test_migrations.migrator import Migrator

from server.apps.main.urls import app_name


def test_initial0001(migrator: Migrator) -> None:
    """Tests the initial migration forward application."""
    old_state = migrator.apply_initial_migration((app_name, None))
    with pytest.raises(LookupError):
        # This model does not exist before this migration:
        old_state.apps.get_model(app_name, 'BlogPost')

    new_state = migrator.apply_tested_migration((app_name, '0001_initial'))
    model = new_state.apps.get_model(app_name, 'BlogPost')

    assert model.objects.create(title='test', body='some body')

00-project-documentation/platform-design/platform-design/wireframes/README.md METASEP
# Wireframes

In this folder you will find the wireframes for the platform. 
We have used a platform called [figma]() to produce our wireframes and images of each page can be found here.

To understand how each page fits in the the platform, you can use the "platform architecture" files to get an overview.  

## How to Use the Wireframes

These wireframes are for the AutSPACEs platform, you can find the code and development work for the platform throughout this repository. 

## How to Contribute
There are many ways to get involved with the AutSPACEs project and we would love to hear your feedback on the platform's design.

#### There are 2 great ways to get involved in the platform's design:
1) join the discussion during our community calls which happen on the first and last thursday of every month (find out when the next one is happening by signing up to the mailing list [here](https://tinyletter.com/AutisticaTuringCitizenScience), or 
2) opening an Issue or a Pull Request that explains:
	- the changes that you are suggesting
	- how these changes improve the usability and accessibility of the platform for the autistic community. 

You can find instructions on how to use Pull Requests and Issues in our [Contributing Guidelines](/contributing-guidelines.md) as well as other information about how to contribute to this project. 
00-project-documentation/platform-design/platform-design/platform-content/what-is-autism.md METASEP
# Copy for AutSPACEs website
Status: WIP

* [Content for “About Autism” sensory processing, and what the project is](#Content-for-“About-Autism”-sensory-processing,-and-what-the-project-is)
* [Content for “How to Use the Platform”](#Copy-for-'How-to-use-the-platform')
* [Content for “Open Humans” explanation for redirection](#Content-for-“Open-Humans”-explanation-for-redirection)
* [Content for “How we use your data’](#How-we-use-your-data)
* [Content for “Get Involved” - explanation of participatory science and links to take part as researchers](#“Get-Involved”)

---

# Content for “About Autism” sensory processing, and what the project is


## What is autism?

Autism affects the way people communicate and experience the world around them.

Autism is a spectrum of developmental conditions. Every autistic person is different. Some are able to learn, live and work independently, while many have learning differences or co-occurring health conditions that require specialist support.

“It's just the way I process the world, it can give me challenges, but it gives me great joy too. I wouldn't be me without it!” Rhi, *autistic adult*

[Find out more](https://www.autistica.org.uk/what-is-autism/what-is-autism)

## What is sensory processing?

Sensory processing refers to the ways that our brains and bodies receive, sort, and respond to our environment using our senses. You might have heard of the five senses: touch, sight, hearing, smell and taste.

There are more senses than just these five. We also have a sense of our own body, how we are moving it, and where it is in space. This sense is called proprioception. If you catch a ball or touch your nose, you are using proprioception.

There are lots of different opinions about how many senses there are. Other senses include: a sense of balance (equilibriocpetion), a sense of hot and cold (thermoception), a sense of your heart beating (cardioception), and a sense of time passing (chromoception).

A lot of autistic people (as many as 9/10 autistic people depending on the study) have sensory processing differences compared to non-autistic people. This means that they might respond to their environments differently. Sometimes this can cause extra challenges and create barriers for autistic peeople compared to non-autistic people when they navigate environments which were not build with autistic people in mind. For example, you might find lights brighter, noises louder, or busy spaces more overwhelming compared to non-autistic people. You may also experience positive differences,

[Find our more](https://www.autism.org.uk/advice-and-guidance/topics/sensory-differences/sensory-differences/all-audiences)

## What is AutSPACEs?

The "Aut" in AutSPACEs refers to Autistic people, and the "SPACEs" is an acronym which refers to exploring **S**ensory **P**rocessing for **A**ccessible **C**ommunity **E**nvironments. This captures the aim of AutSPACEs which is to make spaces better for autistic people by learning about sensory processing and its impact.

AutSPACEs is made by and for autistic people, researchers, and allies of autistic people, who think that the world would be a much better place if autistic people had more of a say in how public and private spaces are used and designed.

All autistic people are different. We want to collect together lots of stories from autistic people, so that we can better understand how sensory processsing differences affect the way autistic people navigate the world around them. Together, we can use this information to build a better world for autistic people.

There are three main goals:

1. To advise organisations about how they can design and adapt spaces and policies to improve autistic people’s lives.
2. To educate non-autistic people so that they can better support their autistic friends, families, and colleagues.
3. To share autistic people’s stories and tips with other autistic people who have similar experiences, so that they can learn from each other

# Copy for 'How to use the platform'

## How it works

### Add to AutSPACEs

#### 1. Register with Open Humans

When you register you create a private and anonymous account with Open Humans. We work with Open Humans to make sure you have control over your data and that it is safe.

#### 2. Share your story

Enter a description of how your senses affect you. For example: "I do not go on trains because they are too loud".

#### 3. Choose who can read your story

You can choose to share your story publicly, so people using AutSPACEs can learn from it, or privately, for research. You can also share both publicly and with researchers if you prefer.

#### 5. Change your stories any time

You can view your own stories and edit them, or change who they are shared with any time, even once they are submitted.


#### Explore AutSPACEs

You do not need an account to explore AutSPACEs and read other people's stories.

If you are autistic, you may find other people who have similar sense experiences to you. You can discover tips and recommendations from them.

If you are not autistic, you may find ways to better support and empathise with autistic people by learning from them how their senses affect them.


# Content for “Open Humans” explanation for redirection

To share your stories using AutSPACEs, you must first register with Open Humans. This is to give you control over your data and make sure that your data is kept safe.

Open Humans have been working with The Alan Turing Institute to create AutSPACEs. They are a not-for-profit organisation designed to help people access and understand their personal data, and to help them do and share things that use that data.

You can find out more about Open Humans on their [website](https://www.openhumans.org/about/).

We will never sell your data, and we will never share it without your consent.

:::success
## Continue
:::

(click takes user to OH registration page)



### How we use your data

We will ***never*** sell your data or share it with anyone without your consent.

We believe that your data should belong to you, so it's your choice what to do with it.

If you choose to share your story with researchers, your story will be part of a dataset with other people's experiences, and researchers can apply to look at the dataset for the purposes of making the world better for autistic people and their families. We will make sure that autistic people are involved in making decisions about who can look at the data. We have partnered with Open Humans to make sure your data is kept safe and secure. You can make this choice by checking the box 'share with researchers' when you share a story.

If you choose to make your experience public, your experience will first be checked over by a moderator to make sure it follows our [code of conduct](link to code of conduct). We will let you know when a moderator has made a decision about your experience. If they decide it does follow our code of conduct, it will be published anonymously on this website. Anyone will be able to view your story, but your name will be kept private. You can make this choice by checking the box 'share online with everyone'.

If you choose not to share your experience you can still view it by going to [My Experiences](link).

You can also choose to share with your story with researchers and make make your story public. You can do this by selecting 'share with researchers' and 'share online with everyone'.

You can also change your mind at any time by going to My-Experiences and selecting which options you would prefer.

## “Get Involved”

AutSPACEs is an open, community-led project. That means that there are lots of ways for everyone to get involved, not just sharing stories. We especially invite autistic people to get involved with AutSPACEs, although all allies of autistic people are welcome.

For example, you can

1. **Apply to become a moderator**: help keep AutSPACEs a welcoming space for all by making sure we publiish stories in line with our [code of conduct](link)
3. **Apply to access the dataset** for research to benefit autistic people.
4. **Apply to join a panel** to assess who can access the dataset.
5. **Use the findings** from the research to make changes to better support autistic people.
6. **Give feedback** and suggest changes to AutSPACEs. This could inclue a number of aspects such as the design of the platform, the code of conduct, or how we are using and sharing the platform.
7. **Spread the word**: Share and promote AutSPACEs so that others can benefit and use it for good.

00-project-documentation/platform-design/platform-design/platform-content/README.md METASEP
# Design Content

This folder will contains copy, assets, and other content related material for the AutSPACEs platform design. It's goal is to curate content that will be used for the platform.

## How to Contribute
There are many ways to get involved with this project and we would love to hear your thoughts!

If you would like to contribute, please read the [Contributing Guidelines](/contributing-guidelines.md) and familiarize yourself with the project and this repository. 

All the designs for the AutSPACEs platform and associated projects have been developed by the community, and we are always open to suggestions, feedback, and collaborations. 

If you would like to design something for AutSPACEs, please get in touch by submitting a `Pull Request` or an `Issue` (instructions on how to do that can be found [here][Contributing Guidelines](/contributing-guidelines.md). 

You can also join our meetups which happen on the first and last thursday of every month (find out when the next one is happening by signing up to the mailing list [here](https://tinyletter.com/AutisticaTuringCitizenScience), or reach out directly to the team.

00-project-documentation/platform-design/platform-design/platform-architecture/autspaces-ia-diagram-22-11-2021.png METASEP

00-project-documentation/platform-design/platform-design/platform-architecture/autspaces-ia-diagram-21-02-2022.png METASEP

00-project-documentation/platform-design/platform-design/platform-architecture/autspaces-ia-diagram-15-11-2021.png METASEP

00-project-documentation/platform-design/platform-design/platform-architecture/autspaces-ia-diagram-15-11-2021.md METASEP
# Information Architecture for AutSPACEs
This is the IA for the AutSPACEs platform as it exists on 15/11/2021. 

## Diagram Key
Please refer to [link - how to read an IA diagram] for a guide on how to read IA diagrams. 
* Purple color is for AutSPACEs platform 
* Blue color is for external pages
    * Open Humans Authentication
    * Tiny Newsletter subscription
* Green color is for AutSPACEs platform pages
    * We have 7 separate pages in total
        * Homepage for non-logged in user
        * Homepage for logged in user
        * Success in logging in page
        * View Experiences page
        * Share Experiences page
        * My Stories page
        * Moderator Page      
* Red color is for pages/features we have designed for, but not implemented. 

### Relevant Documents
* [Figma Link](https://www.figma.com/file/HxqTSdeyAUNMualnBV0PET/Autspace-(WIP)?node-id=172%3A641)

### Diagram
![IA Diagram](autspaces-ia-diagram-22-11-2021.png)
[Diagram in Detail](https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1&title=IA_AutSPACEs.drawio#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1THiziivGBr89J5x9oJahXuHtL7iib8J1%26export%3Ddownload)

00-project-documentation/platform-design/platform-design/platform-architecture/README.md METASEP
# Design Architecture 

This folder contains key information about how the pages of the AutSPACEs platform fit together and how someone can navigate the platform. 

## [Information Architecture](autspaces-ia-diagram-15-11-2021.md) 

Information Architecture(IA) is a diagram which shows the journey of how a user would interact with the platform. 
It's useful for oulining the relationship between pages on the AutSPACEs platform and to review if the features on each page correctly address user needs. 
IA focuses on two elements: **where a user is** and **where to find information a user needs**. 

### How to read an IA Diagram
The diagram reads as a hierarchy from top to bottom with each layer starting with a "parent" element that has corresponding "child" elements. 

#### Diagram Key
* Orange color is for AutSPACEs platform 
* Blue color is for external pages/links.
    * We have 7 external pages/links in total.
        * Registration on Open Humans
        * Authentication on Open Humans 
        * Link to TinyLetter, Slack, Twitter, and GitHub repos
        * Link to Autistica and the National Autistic Society
        * Link to harmful reports through google form
        * Link to conatct us through google form 
        * Link to contact moderators 
* Green color is for AutSPACEs platform pages.
    * We have 8 separate pages in total.
        * Homepage
        * Registration page
        * What Autism Is Page
        * View Stories page
        * Share Stories page
        * Moderate Stories page
        * My Stories page
        * About Us page   
* Purple color is for features that need to be implemented.
   * Pages with features:
        * Registration page
        * View Stories page
        * Share Stories page
        * Moderate Stories page
        * My Stories page  
        
### IA Diagram
* Updated 21-02-2022: [Information Architecture Diagram](https://viewer.diagrams.net/?tags=%7B%7D&highlight=0000ff&edit=_blank&layers=1&nav=1&page-id=XndytNqcHWh8WrCRgyDL&title=IA_AutSPACEs.drawio#Uhttps%3A%2F%2Fdrive.google.com%2Fuc%3Fid%3D1THiziivGBr89J5x9oJahXuHtL7iib8J1%26export%3Ddownload)
  * Changelog:
    * Combined the two separate user journeys into one linear user journey
    * Fixed the broken pages on the frontend side
    * Updated the information per page
    * Added What Autism Is and About Us pages
* Previous diagrams can be found on the same folder. 






00-project-documentation/platform-design/platform-design/design-system/design-code-20220222.md METASEP
# Design Code 20220222
## Colors:
![](https://i.imgur.com/wtlEL9O.png)
* [How the colour palettes were generated](https://hackmd.io/VO3x77q2Td215fkKGLdegw)

## Font
* Stlye
  * [Poppin](https://fonts.google.com/specimen/Poppins): Regular 400, Italic 400, Bold 700
* Size
  * big heading: 5rem
  * section heading: 3rem   
  * paragraph heading: 2rem
  * important contents: 1.5rem
* Line height
  * 1.5

## Padding
  * Page: 2% 5%
  * Sections: 4% 5%

00-project-documentation/platform-design/platform-design/design-system/README.md METASEP
# Design System
00-project-documentation/platform-design/platform-design/design-research/feedback-linkspad.md METASEP
# Feedback Links Pad

This file contains links to files throughout the repository that capture or relate to research on usability and design for the platform. 




00-project-documentation/platform-design/platform-design/design-research/README.md METASEP
# Design Research 

This folder acts to collate and point to information and feedback about the Design of the platform. 

## Contents
* [Personas](./Personas/)
* [feedback-linkspad.md](./feedback-linkspad.md)
* [feedback-summary(2021-10-09)](./AutSPACES%20Feedback%20(19.10).pdf)
  * The summary identified the "key" user needs for the platform's design, functions, and contents based on feeback for the previous prototypes. Detailed information can be found the feedback summary itself. 

## How to Contribute
There are many ways to get involved with this project and we would love to hear your thoughts!

If you would like to contribute to this repository, please read the [Contributing Guidelines](/contributing-guidelines.md) and familiarize yourself with the project and this repository. You can also join our meetups which happen on the first and last thursday of every month (find out when the next one is happening by signing up to the mailing list [here](https://tinyletter.com/AutisticaTuringCitizenScience), or reach out to the team.  

00-project-documentation/platform-design/platform-design/design-research/AutSPACES Feedback (19.10).pdf METASEP

00-project-documentation/platform-design/platform-design/design-requirements/requirements-list.md METASEP
# AutSPACEs Requirements List

This is a requirement list which can be used alongside wireframes to understand the basic structure of the the AutSPACEs platform.

This file lists every page/page-flow of the AutSPACEs platform which has to be built for the platform to be functional, along with a list of desired features on each page. These will eventually be turned into issues on the main repository. For now we are working on a simplified MVP version of the platform.  
It also includes some additional features to be used throughout the platform.  

* The content is based on preferences and needs emerging from the AutSPACEs community in discussion sessions and co-working sesssions. 

## Contents

*Platform pages and page-flows: content, community evidence, sources and resources*
- [AutSPACEs Requirements List](#autspaces-requirements-list)
	- [Contents](#contents)
	- [Platform pages and page-flows: content, community evidence, sources and resources](#platform-pages-and-page-flows-content-community-evidence-sources-and-resources)
		- [Landing Page](#landing-page)
		- [Sign-up flow](#sign-up-flow)
		- [Sign-up flow resources](#sign-up-flow-resources)
		- [Sign-in](#sign-in)
		- [Enter experiences flow](#enter-experiences-flow)
		- [Enter experiences flow: resources](#enter-experiences-flow-resources)
		- [View other experiences page](#view-other-experiences-page)
		- [View own experiences page](#view-own-experiences-page)
		- [Moderation flow](#moderation-flow)
		- [Settings page](#settings-page)
		- [About page](#about-page)
		- [Crisis Support Page](#crisis-support-page)
		- [Additional design considerations](#additional-design-considerations)
		- [Additional design considerations: resources](#additional-design-considerations-resources)
 
*General design features* 
- [Additional design considerations](#additional-design-considerations)


## Platform pages and page-flows: content, community evidence, sources and resources

### Landing Page

* Navigation bar
	* Login/sign-out
	* Help
	* Links to other pages
	* Accessibility icon
	* Text-to-voice/voice-to-text options
	* Crisis support – we make it clear we don’t provide this but can link to other places
* Title
* Strapline
* Engaging visual imagery or video
* OH, Autistica and ATI logos
* Call to actions
	* sign up
	* enter experience
	* read experiences
	* Find out more
* Information on:
	* Project summary (inc. sensory processing)
	* How it works – step by step
	* Main goals – how it will help
	* Autistic-first space with autistic community
	* Reassurance about data: anonymous, you choose, no selling for profit
* Get in touch
* Give feedback

### Sign-up flow

* Sign-up Flow
* Sign-in integration with Open Humans: email and password 
* Explanation of why they’re going to Open Humans 
* Sign-up questions:
	* Are you autistic?
	* Are you the parent or full time carer of someone autistic? 
	* Are you answering on behalf of someone else?
	* Option to describe other connection to autism (free text box)
* option to sign up straight away or answer more questions
* Additional demographic questions (e.g.): 
	* *Ethnicity	
	* *Education	
	* *Income bracket	
	* *Gender identification	
	* *Sexuality
* option to prefer not to answer for each question; 
* option to self-describe for each question
* Sign up confirmation
* easy navigation from confirmation page
* Option to create a shared account?

### Sign-up flow resources

* Fujitsu have created an integration with the Open Humans signup process which collects email and password for login purposes
* Gov.uk has open source code freely available for individual, well-evidenced and user-tested components that could be used for the sign-up flow

![](https://i.imgur.com/J6LKVL8.png)

![](https://i.imgur.com/v3wxAZH.png)


* Free reusable open source code for typeform-style surveys: https://github.com/ohmyform/ohmyform

### Sign-in

* Take user details and log them into their private account via Open Humans 
* Explanation of why signing up via Open Humans  (drop down?)
* Help for forgotten usernames and passwords/for problems signing in (check Open Humans process?)

### Enter experiences flow

* Asks user to enter experience 
* Asks user what would have made their experience better
* Takes input
	* free text
	* structured input
	* record videos
	* record voice
* Option to upload extra files or other as supplement
* Save option
* Change permissions:
	* for researcher
	* share online
	* share online only with autistic people
* Add tags option
* Review option
* Submit option – let’s you skip the suggestions button
	* consent (radio) button – second consent that appears if you’ve uploaded a video or a voice – research suggestion if not okay with consent statement 
* Suggestions button – continues to what would have been better page
* Confirmation page
* Easy navigation from confirmation page

### Enter experiences flow: resources

* Crisisloggerl https://crisislogger.org has some good basic input options and is open source so we could reuse the code 

![](https://i.imgur.com/hCdwuG1.png)

### View other experiences page

* Search function
* Filter options
	* Autistic-only
	* Child-friendly (tag for adult content)
	* No distressing experiences (tag for sensitive content) 
* See different kinds of input option
	* All, or selection of:
		* Text
		* Videos
		* Sound recordings
		* Images
* Display experiences
* Option to flag for moderation
* Sort by options
	* Date
	* Relevance
* Option to save to personal page

### View own experiences page

* Private page
* Shows list of experiences submitted or saved by user
* Show status of experiences
* Shows date or time stamp of when experience submitted
* View full experiences
* Edit experiences
	* Add tags
* Change sharing permissions for experiences:
		* Publish openly 
		* Only for research
		* Only for autistic people
* Delete experiences
* Export button - share page with someone else or email to self 
* Allow someone else to edit/co-create page – toggle consent 
* View and edit tags created by machine learning algorithm as well as own 

### Moderation flow

The moderation process is currently being co-created by the autistic/turing citizen science community. 
In the meantime, it would be useful to have a basic moderation flow:

* Sign-in flow adapted for moderators
* With sign access to a moderation page:
	* All experiences with permission to publicly share are automatically fed into this page.
	* User can view an experience and assess it anonymously 
	* User can publish experience if appropriate
	* User can reject experience if appropriate 

### Settings page

* View profile
* Change signup information answers
* Customise platform
	* colour palette 
	* contrast, 
	* text size
	* default input mode
	* default view modes
* Accessibility settings
* Help with platform
* Need other help
	* Link to different websites which can offer advice on:
		* medical issues
		* diagnostic issues
		* anxiety issues
		* general autism information (Autistica)
* Get in touch
* Logout

N.B. jiraslama has already done a lot of design work on this which is available via. axshare 

### About page

* Project news and updates
* Testimonials 
* How it works
* Our main goals * Overview of project
* Sensory processing info * About our community
	* Autistic citizen scientists
	* Researchers
	* Organisations
		* Alan Turing Institute
		* Autistica
		* Open Humans* How AutSPACE was created (participatory science)* Code of Conduct
* Guidelines on sharing on behalf of others* How we moderate – simple diagram* What happens to your data – simple diagram, privacy notice and GDPR
* Open Source (and link to GitHub repositories)
* Get in touch
* Give feedback
* Newsletter sign up
* Resources/links to external resources for concerns, e.g. welfare concerns  

### Crisis Support Page
* Link to different websites which can offer advice on:
	* medical issues
	* diagnostic issues
	* anxiety issues
	* general autism information (Autistica)

*General design features* 

### Additional design considerations

* autistic people can be overwhelmed by too much information on one page: clear, clean, logical and sequential design. 
* simple words, no metaphors 
* step-by-steps and diagrams
* must be accessible to people with diverse needs (incorporate Chris’ work)
* not too high contrast (too bright a screen can cause pain to some autistic people) (A)
* adapts to different screen sizes well (phone, website, ipad) (AP)
* option to ask real people for help
* must contain voice-to-text and screen reader capabilities  
* make motivation salient
* no word limits/counts (AP)
* no bewildering alerts or prompts that may provoke anxiety
* no time countdowns  
* Help and guidance options

Basic, government digital services guide to designing for autistic users: 

![](https://i.imgur.com/B1vVF7W.png)

### Additional design considerations: resources

Blog by an autistic UX designer: https://uxmastery.com/researching-designing-for-autism/

Jiraslama's Accessibility Menu: https://5wwsja.axshare.com/#g=1&p=1-settings
Screen reader options: https://5wwsja.axshare.com/#g=1&p=0-home-light-screen-reader-option-2

00-project-documentation/platform-design/platform-design/design-requirements/accessibility-checklist.md METASEP
# Accessibility Checklist

This file lists criteria for accesibility according to gov.uk. 
While we will create more rigorous and specific standards of accessibility and customisation for our project outputs in relation to autism. 
This provides a thoroughly tested bar for inclusion across multiple dimensions. 
Please use this document to check any online project outputs for accessibility. 

<details>
<summary>HTML checks - Check any video players are accessible</summary>
<br>

#### Summary

You need to check that any video players are accessible. 
This means checking that the buttons you need to use to interact with the video player are marked up in a way that a screen reader would recognise.

#### What needs to be done?

You’ll need to inspect the page HTML to check whether you’re meeting this requirement. 
Bring up the page HTML using the same method you used to check whether your text content was marked up properly.
Once you’ve done that, right-click (or left-click if you’re using Edge) one of the video player buttons and select ‘inspect’ or ‘inspect element’, depending on the browser you’re using.

Check whether the button’s been given a name like ‘Play’ or ‘Pause’ - if it has, the name will likely appear as part of a ‘title’ or ‘aria label’ tag.
If there’s no text indicating what the button does then it’s probably not been marked up properly. 
This means a screen reader will not know what the button’s for and that users need to be able to see and understand the button icon to work it out for themselves.
</details>

<details>
<summary>HTML checks - check the language the content is written in</summary> 
<br>  

#### Summary

A screen reader needs to know what language a page is written in so it uses the correct speech libraries for accent and pronunciation. 
It only knows this if the language is specified in the page HTML.

#### What needs to be done?

You’ll need to check the HTML of your sample content pages to see whether your website does this. 
To inspect the page HTML, use the same method you used when checking whether your content was marked up appropriately.
Once you’ve opened the HTML, scroll to the top of the panel. 
You should see a <!doctype html> tag. 
Directly under that you should see an <html lang=” tag. 
This is where the screen reader finds out the page language.
If the page is written in English, the tag should read <html lang=“en” or <html lang=“en-gb”. 
If it’s empty, the screen reader cannot tell what language the page is in.
If any of your sample pages contain content written in other languages, you’ll need to check that’s marked up properly too, using the country code for the relevant language.                                                                                
</details>

<details>
<summary>HTML checks - Checking tables and bullet lists are styled properly</summary>
<br>

#### Summary 

Check that any tables and bullet lists have been styled properly. If they are not styled properly, screen reader software will not recognise what they are and will not convey the information in a way that makes sense to users.
                                                                                
#### What needs to be done?

View HTML page
The way you view your page’s HTML depends on which browser you’re using. If you’re using:

Google Chrome, right-click the page element you want to check and select ‘inspect’
Safari, right-click the page element you want to check and select ‘inspect element’ - you might need to enable Safari developer tools first
Edge, press ‘F12’, then hold ‘Ctrl’ and ‘B’ - once you’ve done that, left-click the page element you want to check
Firefox, right-click the element you want to check and select ‘inspect element’ - you might need to enable Firefox web developer first
This should open up a panel somewhere on your screen showing the HTML for the page. 

**Check a few tables and bullet lists from your sample pages**. Once you’ve opened up the source code, look out for the following sorts of tags:

for tables, look out for td, th and tr in <>
for bullet lists, look out for ul and li in <>
If you can see these tags, it’s likely the elements have been styled properly.
</details>

<details>
<summary>Search and other forms of navigation</summary>
<br>

#### Summary

You’ll need to do some checks to see how accessible your website’s navigation is. 
Navigation includes things like search, site maps and navigation categories.

#### What needs to be done?

**Check your navigation behaves consistently**
Things like search bars and breadcrumb trails (the list of links that appear at the top of the page to show where in your website’s navigation you currently are) should behave in the same way wherever they appear on your website.

You can check for this by going to a few of your sample pages and checking whether the navigational elements are presented consistently. If things like search boxes or navigation menus appear in different places across the pages, you’re probably not meeting this requirement.

**Check links do not trigger on the down-press of a mouse**
To open a link, a user has to click their mouse (known as a ‘down event’) and release it (known as an ‘up event’).

You need to check that this is how your links behave. Check a sample of your content pages and interact with some of the links - specifically to see whether the links are opened on the down click of the mouse, or whether they only open once you release the mouse button.

If they’re triggered on the down event, you’re likely not meeting this requirement.
</details>


<details>
<summary>Check whether there’s an alternative for people who cannot see maps</summary>
<br>

#### Summary

Some websites contain interactive maps.

It’s very hard to make a map itself accessible to people who have visual impairments using some sorts of assistive technology. 
At the least, you should provide an alternative for users who cannot use the map.

#### What needs to be done?

It’s very hard to make a map itself accessible to people who have visual impairments using some sorts of assistive technology.
At the least, you should provide an alternative for users who cannot use the map.

The Pension Wise website does this well. 
For instance, when you search for your nearest contact centre, you’re presented not only with a map you could use to navigate, but also with a text address any user could access.

Check any maps on your website to see whether you’re providing alternative routes for users who cannot use the map.
</details>

<details>
<summary>Pop-ups and interactive or flashing content</summary>
<br>

#### Summary

Pop-ups or flashing images can be very distracting. They should not be there by default and users need to be able to disable or dismiss these elements easily.

#### What needs to be done?

**Check that users can disable animated or moving content**
Things like scrolling carousels or blinking images can be very distracting for people with cognitive disabilities.

If your website contains these sorts of elements, you need to check whether users can disable them.

Go to any of your sample pages containing these items and see if there’s a way to stop them. Try clicking on them, or interacting with the surrounding content. Check to see if there’s a button to stop or pause the item.

**Check for content that plays automatically**
Some websites play audio or video content automatically when a user refreshes or opens a page.

If this applies to your website - and the content plays for more than 3 seconds - you’ll need to check users can either change the volume or stop.
</details>
  
<details>
<summary>Checking content is usable when zoomed in or magnified</summary>

#### Summary

Some users with visual impairments use screen magnification tools that zoom into the page content, or increase the size of the text. 
You’ll need to check your content is usable for people using these tools.

#### What needs to be done?

 - **Checking content is usable when you enlarge the text**
Take a couple of the forms and content pages from your sample and see what happens if you increase the font size.

You can usually do this by changing the settings in your browser. For example, in Chrome you do this by choosing “Settings”, and changing the “Font size” from “medium” to “very large”.

Once you’ve increased the font size, try to complete a few tasks using your sample pages. If the page resizes or restructures properly, it should not obscure any of the important information or buttons you’d need to progress through a form.

 - **Checking how the page behaves when users zoom in**
You’ll need to check what happens to your pages when you adjust the page zoom in your browser. You can do this either through your browser’s settings or by using a keyboard shortcut - usually ‘Cmd’ or ‘Ctrl’ plus the ‘+’ key.

Use the same sample of pages you used when tweaking the size of the text. For each page, see what happens when you zoom progressively further in.

If your website is handling this in an accessible way, then you should be able to navigate without using horizontal scroll: the content should reformat in a way that means you only need to use vertical scrolling.
</details>

<details>
<summary>Navigating just using a keyboard</summary> 
<br>

#### Summary

Some of your users need to navigate without a mouse, just using a keyboard. You’ll need to do some checks to see how easy it is for them to do that.

The main keys you’ll be using to navigate are the space bar, ‘Tab’, ‘Enter’ and ‘Esc’ keys. ‘Tab’ is the key that lets you jump between page elements, while ‘Enter’ and ‘Esc’ let you interact with and dismiss those page elements. The space bar activates buttons, checkboxes and radio buttons.

You might need to enable the tabbing function if you’re using Safari.

#### What needs to be done?

 - Check you can tell where you are on the page
When you navigate just using a keyboard, you do not have the mouse cursor to let you know where the focus is on the page. You need to make sure there’s another way for users to orientate themselves and understand which page element they’re focusing on.

For example, if you tab through the GOV.UK homepage you’ll notice that the page element in focus is highlighted very clearly with a prominent orange block.

 - Spend a few minutes tabbing through a few of the sample pages you selected. Ask yourself whether it’s clear where on the page you’re focused - if it takes you a while to notice which element is in focus then you’re probably not meeting this requirement.

 - Check the order makes sense when tabbing
While you were tabbing through the page elements, you should have noticed whether the tabbing moved in a logical order. For instance, if you tab on to a navigation bar, you’d expect to be able to tab through the entire bar without the focus jumping off elsewhere on the page.

 - Spend a few minutes testing this on a few of your sample pages, to check you can tab in a logical order.

 - Check nothing unexpected happens when tabbing through a page
When you were tabbing through your sample pages, you should have noticed whether anything unexpected happened. For example, if tabbing onto an element triggered anything like:
a new web page to open
a navigation menu to open
Another thing to look out for is whether you can interact with all the page elements you’d expect to.

For example, some websites like the Service Manual feature expandable, hide and reveal style navigation. If these navigational elements are marked up properly, you can expand and close them with a keyboard as you would with a mouse.

But if they’re marked up incorrectly, you’ll likely tab straight past them using just a keyboard. Look out for things like this.

- Check you do not get stuck when navigating through content
While you’re tabbing through your sample pages, note down any places where you get stuck.
Getting stuck means ending up somewhere you cannot navigate away from using just your keyboard. For instance, you might activate a pop-up or interactive element that you cannot skip away from just by using the ‘Esc’ key.
People not using a mouse would not be able to move away from a page element like this, which could prove very frustrating.
If you find you get stuck, you’re probably not meeting this requirement.

 - Check forms are still usable without a mouse
Take your sample of forms and see if you can complete them without using a mouse. This means using ‘Tab’ to jump between the form elements and ‘Enter’ to interact with any navigation elements, like ‘next’ or ‘submit’ buttons.
If there are form elements you cannot get through using just your keyboard, then your website is not meeting this requirement.

 - Check users can skip to the main content on a page
Lots of websites contain several links and navigational elements in the header at the top of the page. Users need to be able to skip past these links straight to the main page content if they want to, so they’re not forced to tab through each item individually every time they open a new page.
Some websites give users the chance to skip these header blocks. For instance, if you hit ‘Tab’ when you arrive at the GOV.UK home page, you’ll see the option to ‘Skip to main content’. If you hit ‘Enter’, the page will refocus past the header block down to where the actual page content begins.

See if the same thing happens when you hit ‘Tab’ after refreshing a page on your website.
</details>

<details>
<summary>Tests using a mobile or tablet device</summary>
<br>

#### Summary

You’ll need to start by doing some checks using a mobile or tablet device to check that your website is usable on these types of device.

#### What needs to be done?

 - Check the page orientation

You’ll need to take a few of your sample pages and check they respond properly when you try to change the page orientation.

You can do this by loading up a page on a mobile or tablet device and turning the screen from portrait to landscape a few times. The page should respond to fit that view, rather than staying locked in place.

 - Check you can navigate using just one finger

Some users have limited dexterity or range of movement, which means it’s important that they do not have to use complex gestures that involve more than one finger to navigate your website on their mobile or tablet device. There needs to be a simple alternative that they can use that only requires one finger.

Go through your sample content pages and check whether it’s possible to navigate using just one finger. Try things like double-tapping to zoom in and out of the page and holding or hovering your finger over an element to highlight it.

It’s worth trying to complete a couple of forms using these techniques, too.

 - Check you’re not relying on complex motions
Some more interactive websites or apps require users to do things like shake or tilt their device to complete an action.

This will not apply to most websites, but if it applies to yours then you need to make sure there’s an alternative for users who cannot move their device in these ways.

Check that none of your sample pages require any of these types of interactions - and if they do, that there’s another way of completing that task.
</details>

<details>
<summary>Check the PDFs and other documents</summary>
<br>

#### Summary

You’ll need to check your sample of PDFs and other documents (for example, Word documents, spreadsheets and presentations). Your sample should include:

documents that are essential to users accessing one of your services, no matter when they were published

non-essential documents (such as leaflets) that were published on or after 23 September 2018

#### What needs to be done?

- Check the documents have meaningful titles. First, check the documents have descriptive titles that explain what they’re for.
-
An example of a good title is something like “Blue badge application form”, as it makes clear what the document is and what a user would use it for. Something like “Accounts - ‘18” is not as good, because it’s vague and does not explain in enough detail what the document is. 

- Check for headings. For this test, you’ll need to open a few of the documents in a document editor. You could use something like Google Docs or Microsoft Word for this if you do not have PDF editing software. The first thing to check is that the document is broken up into sections - and that those sections all have descriptive headings. This will allow people using screen readers to scan the document and jump to the section that’s relevant to them. You’ll also need to check that the headings are tagged properly - for instance, they’ve been created using the styles gallery in Microsoft Word or something similar. That way, a screen reader will recognise them as headings and will let users scan through them to find the content they need. If the headings are just styled using bold, the screen reader will not know they’re headings. 
- Check the documents convey instructions in an accessible way
You need to make sure you’re not conveying instructions in a way that relies on a user’s ability to see the document.
For example, only sighted users will understand instructions like: ‘click the round button’ ‘click the big button below’ ‘click the red button’ Users who cannot see the page will not know what you’re referring to, because you need to be able to see the page to identify a button as ‘big’, ‘red’ or ‘round’. So check your document sample and look out for these types of instructions.
- Check that any link text makes sense. Next, check that any link text you’re using clearly explains where the link will take the user. This is important because screen reader users often scan through lists of links in isolation. This means they do not have the surrounding context to help them understand what the link is for. You can check your links by looking at your sample pages and just reading the link text - without paying attention to the surrounding content. If the links still make sense even in isolation and clearly explain where the links go, it’s likely the text you’re using is accessible. If you’re using link text like ‘click here’ or ‘more information’ then you’re probably not meeting this requirement, as link text like that does not describe where the link will go or what it’s for.
- Check that images, charts and tables have a description .You’ll need to check that any visual way of conveying data like a table, chart or image is described in the surrounding text. That way, users who cannot see the images can still access the information the image conveys.
</details>

<details>
<summary>Check users can review their answers before submitting a form</summary>
<br>

#### Summary 
  
Users need to be able to check their answers before submitting certain types of form, to confirm they’ve entered the correct information. 
This only applies to forms where there would be serious consequences to them making a mistake - for example, financial transactions or something that enters them into a legal contract.

#### What needs to be done?

You can test this by going to any of your sample forms that meet these criteria and working your way through them. See if you’re presented with a page that lets you check your answers before submitting the form.
</details>

<details>
<summary>Check that any error messages are helpful</summary>
<br>
  
#### Summary

When a user provides incorrect information in a form, you need to let them know they’ve made a mistake and help them correct that mistake.

#### What needs to be done?

You can check how well your website is doing this by going to your sample forms and entering some intentionally incorrect or invalid information.

For example, you could enter a future date into a date of birth field or a postcode with too few characters and try submitting the form. 
This should generate an error message.

Assess whether the error messages make clear what you need to do to correct the mistakes. 
Messages like ‘invalid date’ or ‘invalid postcode’ are not very helpful: they indicate that the user has made a mistake, but do not explain why the information was wrong and how to correct the error.

Something like ‘You cannot enter a date in the future - please enter a past date’ is much more helpful.

Play around with a few form fields to see how helpful the error messages are.
</details>
  
<details>
<summary>Check users get a warning before they’re timed out</summary>
<br>
  
#### Summary

Some websites time users out after a period of inactivity. 
This usually results in form data being lost, or the user being automatically logged out of an account.

You need to make sure to warn users if you’re going to time them out after a period of inactivity. 
You’ll also need to give them the chance to interact with the page to prevent the time out from happening.

#### What needs to be done?

You need to make sure to warn users if you’re going to time them out after a period of inactivity. 
You’ll also need to give them the chance to interact with the page to prevent the time out from happening.

Test whether you’re doing this by going to one of the forms on your website and remaining inactive for around 20 minutes. 
If you get timed out with no warning, then you’re not meeting the requirements.

If, after a while, you were given a timeout warning and a chance to prevent the timeout by interacting with the page, you’re likely meeting the requirements
</details>

<details>
<summary>Check form elements are consistent across your website</summary>
<br>

#### Summary

When you’re checking through your forms, you’ll need to check that form labels are used consistently. 
These are the labels that describe the information a user needs to enter into a particular field.

#### What needs to be done?

Check your sample to see how you’re labelling the navigational elements. For instance, are you using ‘Submit’ on one form and then using ‘Go’ or ‘Complete’ on another?

Are you asking for users’ names and addresses in a consistent manner, or does it vary from form to form?
</details>

<details>
<summary>Check it’s clear what information users need to provide</summary>
<br>
 
#### Summary

As you go through your sample forms, you’ll need to check you’re using field labels in a way that makes clear what information the user needs to enter

#### What needs to be done?

As you go through your sample forms, you’ll need to check you’re using field labels in a way that makes clear what information the user needs to enter.

As a general rule, these labels should be specific. Look at your forms and make an assessment as to whether they’re clear. 
Common mistakes include not labelling fields at all, or using vague labels like ‘Name’ which do not make clear whose name the user needs to enter (for example, it could be a partner or child’s name, rather than the user’s own name).
</details>

<details>
<summary>Check form fields are marked up appropriately</summary> 
<br>

#### Summary

You need to make sure any form fields are marked up correctly. 
If they’re not marked up properly, screen readers will not be able to tell what a form field is for, or what information the user should enter into it.

#### What needs to be done?

You can check your form fields are marked up properly by going to a form and clicking on a field label (the text above, below or next to the field that explains what it’s for). If the field is marked up correctly, clicking the field label should cause your cursor to appear inside the corresponding field.

Do this test on a few of your forms to check whether the fields respond as they should
</details>

<details>
<summary>Check you’re using proper headings</summary>  
<br>

#### Summary

It’s important that any headings you’re using are styled properly. 
This is because some users with visual impairments use tools called ‘screen readers’ that read out page content to them

#### What needs to be done?

Screen reader users often jump through the list of headings in a document so they can skip to the content they’re looking for.

* If you’re styling headings just using bold, or by using bigger font, then screen readers will not recognise them as headings. This will stop users from skipping straight to the content they need.

* To check your headings are styled properly, open up the tool you use to edit your website (often known as a ‘content management system’) and check the headings on your sample pages. They’re styled correctly if something like one of the following applies:

    * your headings are styled as things like ‘Heading level 2’, rather than ‘Normal text’
    * you can see tags like ##, ###, H2 or H3 in <>

Requires basic html knowledge
</details>

<details>
<summary>Check pages are usable when stylesheets are disabled</summary>
<br>

#### Summary
 
The way a page looks is controlled by something called a ‘stylesheet’. 
It defines things like the way a page is laid out and any font colours.

Your content should still be usable even if stylesheets are disabled, or are not loading properly. 
This means it’s still possible for users to complete any relevant tasks or find important information - for example, look for opening hours or contact details, or navigate their way to the form they need to fill out.

#### What needs to be done?

You’ll need to check your sample pages are still usable when stylesheets are disabled. 
Test this by copying a URL from your website and pasting it into the WAVE tool. 
Once you’ve done that, select ‘no styles’ from the panel on the left-hand side of the tool. This should give you a much more basic view of the page.

Check whether you can still use the content to complete any relevant tasks
</details>

<details>
<summary>Check for images containing text</summary>
<br>

#### Summary

You’ll need to check whether any of your sample images contain text. 
This is because screen readers will not be able to read the text within the image. 
The information should be published as normal page text instead.

#### What needs to be done?

You’ll need to check whether any of your sample images contain text. 
This is because screen readers will not be able to read the text within the image. 
The information should be published as normal page text instead.

This does not include logos and brand names - it’s okay for those to contain text.
</details>

<details>
<summary>Audio descriptions for video and audio content</summary>
<br>

#### Summary

When you check through the videos on your website, you might come across things that are covered in the video but not described in the audio track - something like the contents of a chart or graph, for example.

If you were only following the audio, you’d miss this information. 
To make sure users can access the information they need, you’d need to provide an extra audio description to describe anything not covered in the main audio track.

#### What needs to be done?

Check your sample of videos to see if an extra audio track is required and whether you’re providing one.
</details>

<details>
<summary>Check any video or audio content is properly described</summary>
<br>

#### Summary

You’ll need to check that any videos or audio content are clearly described so that users who cannot hear them can still access the information

#### What needs to be done?

This firstly means checking that videos have captions explaining any sound effects and dialogue. 
You should also check your sample videos (maybe 2 or 3) to assess the quality of those captions.

Once you’ve done that, you’ll need to check there are transcripts for any audio content you’ve got.
</details>

<details>
<summary>Check any images have a description</summary> 
<br>

#### Summary
  
You’ll need to check that any non-decorative images (including charts or diagrams) have an accompanying text description. 
That way, users can still access the relevant information even if they cannot see the image

#### What needs to be done?

Take your sample pages and check that any images either:

have appropriate alternative (or ‘alt) text that explains the information the image conveys - you can usually check this in the content management system you use to update your website
are described in any surrounding body text
You do not need to check decorative images - these do not need an accompanying description.
</details>

<details>
<summary>Check that pages have good titles</summary>

#### Summary

You need to check your pages are titled properly. 
  If they’re not, users will not understand what they’re for and will struggle to find what they need using search

#### What needs to be done?

Your page title should appear in the page tab at the top of your browser. 
For instance, if you go to the GOV.UK homepage you’ll see the text in the tab near the top of the browser is ‘Welcome to GOV.UK’. 
This is the page title.

Look at the equivalent text for your sample pages. 
You can hover over the tab to see the full text if it’s too long to fit on the tab itself.

Check whether your titles are descriptive. Ask yourself whether they clearly state - in simple language - what the pages are about and the tasks they’d help users complete.

For example, ‘Apply for a blue badge - Danbury Council’ is a much more descriptive title than just ‘Blue badges’.

Also check that none of the titles are duplicated: if 2 pages have the same title, how is the user supposed to know which one to use?
</details>

<details>
<summary>Check that form elements behave as expected</summary>
<br>

#### Summary

When you were working your way through some of your sample forms, you should have noticed whether interacting with any of the elements caused anything unexpected to happen
This includes things like a dropdown menu or radio button (an element that lets you select just one of a few options) causing a new page to open when you click on it.

#### What needs to be done?

Check forms to ensure this isn't an issue.
</details>

<details>
<summary>Check that links make sense</summary>
<br>

#### Summary
  
Check any links on your sample content pages to check that the link text you’re using clearly explains where any links will take the user

#### What needs to be done?

Check any links on your sample content pages to check that the link text you’re using clearly explains where any links will take the user.

This is important because screen reader users often scan through lists of links in isolation. This means they do not have the surrounding context to help them understand what the link is for.

You can check your links by looking at your sample pages and just reading the link text - without paying attention to the surrounding content. 
If the link text still makes sense in isolation and clearly explains where the link goes, it’s likely the text you’re using is accessible.

If you’re using link text like ‘click here’ or ‘more information’ then you’re probably not meeting this requirement, as link text like that does not describe where the link will go or what it’s for.
</details>

<details>
<summary>Check that instructions are styled properly</summary>
<br>

#### Summary
  
You need to make sure you’re not conveying instructions in a way that relies on a user’s ability to see the page

#### What needs to be done?

You need to make sure you’re not conveying instructions in a way that relies on a user’s ability to see the page.

For example, only sighted users will understand instructions like:

‘click the round button’
‘click the big button below’
‘click the red button’
Users who cannot see the page will not know what you’re referring to, because instructions like that rely on visual descriptions.

So check your sample of pages and look out for these types of instructions


00-project-documentation/platform-design/platform-design/design-requirements/README.md METASEP
# Design Requirements 

This folder contains key information on the requirements for the content and features of the AutSPACEs platform. 

It captures many of the important features for accessibility and usability of the platform. 

### Contributing

It is core to our Community Values that we work openly and with transparency. As a result, this folder will be a "work in progress" and content will be added as we move throughout the project.

If you see something missing, want to contribute, or want to learn more: please read our [Contributing Guidelines](/contributing-guidelines.md) and familiarize yourself with the project and this repository, and then open an Issue, Pull Request, or comment on existing Issues. 

## Contents
* [accessibility-checklist](./accessibility-checklist.md) which summarizes the gov.uk reccomendations for making web pages accessible. 
* [requirements-list.md](./requirements-list.md) which summarizes the most important features that needed to go on each page of the platform.

00-project-documentation/platform-design/platform-design/design-process/README.md METASEP
# Design Process

This folder contains content (e.g. presentations, meeting summary notes, images etc) that we have generated throughout the process of designing and co-creating the AutSPACEs platform. We've followed a set of steps in our design process that were developed into a system called "Design Thinking". "Design Thinking" helps our designers and developers to understand, empathise, define, ideate, prototype, and test designs for the AutSPACEs platform. 

You can read more about this process below in the [Design Introduction](#design-introduction) section to gives an overview of "The Design Overview" and its steps. 

It is core to our Community Values that we work openly and with transparency. As a result, this folder will be a "work in progress" and content wil be added as we move throughout the Design Process. 

## Contributing

If you see something missing, want to contribute, or want to learn more: please read our [Contributing Guidelines](/contributing-guidelines.md) and familiarize yourself with the project and this repository, and then open an Issue, Pull Request, or comment on existing design related Issues. 


## Design Introduction 

The word **“Design”** covers everything from 
- Visual Design (what it looks like)
- Interaction Design (how users interact with it)
- System Design (how the pages or components fit together)
- Interface Design (how it responses to the user), and so much more! 

These types of design fall into the category of **“User Experience Design” or UX** for short. UX is everything that affects the experience and use of a digital product. We will refer to the UX design of the platform throughout this folder. 
You can read more about UX at Adobe’s website [here](https://xd.adobe.com/ideas/career-tips/what-is-ux-design/).  


### The Design Process 
There are many different design processes you can follow when developing a project. We are following a specific UX Design Process for AutSPACE called "Design Thinking". 
- We chose this process because it aligns with our focus on co-creation. Our community believes in building AutSPACEs, so that there is __nothing for us, without us__. This means that the design of the platform (and all its features) are built by, for, and with autistic individuals. 

You can view the [Presentation on the Design Process](./15-11-21-AutSPACEs-Design-Process.pdf) from one of our November Community Meet Ups to see a visual version of this process. 


## Resources to read more
* Free Design Tutorials
  *  https://www.uxdatabase.io/free-product-design-course-curriculum Resource for free design tutorials and related tools 
* Illustrations and Icons
  * https://www.opendoodles.com/ Provides Open Source illustrations. 
  * https://thenounproject.com/ Resource for icons that can be used with attribution.
  * https://streamlinehq.com/ Resource for both icons and illustrations that can be customized by colour and used with attribution. 
  * https://storyset.com/ Provides 4 types of illustration and can be customized by colour. 




00-project-documentation/platform-design/platform-design/design-process/15-11-21-AutSPACEs-Design-Process.pdf METASEP

00-project-documentation/community/images/noun-project-icons/noun_transcript_532343.png METASEP

00-project-documentation/community/images/noun-project-icons/noun_todolist_1128326.png METASEP

00-project-documentation/community/images/noun-project-icons/noun_online_1632606.png METASEP

00-project-documentation/community/images/noun-project-icons/noun_Eye_2040041.png METASEP

00-project-documentation/community/images/noun-project-icons/noun_Document_188540.png METASEP

00-project-documentation/community/images/noun-project-icons/noun_Conversation_2041500.png METASEP

00-project-documentation/communication/reports/turing-health-quartery-updates/autistica-project-updates-q3-2019_20.md METASEP
# Turing Health Programme Update: January 2019

***Covering activity 1 October 2019 to 31 December 2019***

*Some information has been redacted as it pertains to internal Turing communications that we do not have permission to make publicly available.*

## Project information

* **Project title**: Using citizen science to help autistic people navigate the world
* **Lead investigator**: Kirstie Whitaker (University of Cambridge/Turing Research Fellow)
* **Research associate**: Georgia Aitkenhead (Turing Institute)
* **Funding**: Autistica
* **Start date**: 20 December 2018
* **Projected end date**: 1 May 2021
* **Turing website**: https://www.turing.ac.uk/research/research-projects/citizen-science-platform-autistica
* **GitHub repository**: https://github.com/alan-turing-institute/AutisticaCitizenScience
* **Project website**: https://alan-turing-institute.github.io/AutisticaCitizenScience
* **Ethics approved**: by the University of Cambridge Psychology Research Ethics Committee (on 26 July 2019)

## Notable/substantive activity/outcomes in research progress

* This quarter we have made substantial progress transcribing the three focus group events held at Fujitsu’s offices in September 2019.
  The transcripts are approximately 60 pages long each.
  * Key quotes have been extracted from the transcripts and collated into insight documents.
    These documents will be reviewed by members of the focus groups to ensure their messages have been appropriately and sufficiently well anonymised.
  * The process for reviewing these insight documents has been developed through deep and very valuable engagement from autistic members of the project community.
  *	We project that this valuable dataset on autistic people’s priorities and requirements will be released under an open licence in March 2020.
* We held a productive workshop at the Turing Institute with the Fujitsu team on 18 November 2019 to map out working methods and to develop community co-creation strategies.
  We exchanged knowledge of GitHub collaboration and agile working.
  Future meetings are scheduled in January 2020 to further develop these collaborative ways of working.
* Georgia Aitkenhead circulated a full draft of position paper for the project in December 2019.
We received comments from key colleagues and will incorporate them into another version in early 2020.
We project this manuscript will be submitted for publication in March 2020.
* We would like to acknowledge and thank Turing facilities team member Otis Smith who continues to work with researchers.
  Otis provides valuable insights for the project, for example his efforts developing a categorisation system for contextualising autistic people's experiences.
* There were 3 pull requests created in this period, 2 of which were closed in the 3 months, and 15 new issues, 1 of which was closed in the 3 months.
* The team sent one newsletter in this period (November 2019) to 40 subscribers.
  * https://tinyletter.com/AutisticaTuringCitizenScience/archive

## Status of progress against goals/milestones, any blockers to progress

* Transcribing the focus groups and extracting the summary insights took longer than the project team had anticipated. 
  We are confident that the extra effort will be reflected in the final output.
* This project was affected by an 8 day strike by members of the University and College Union in November and December 2019.
  Kirstie Whitaker did not work from 25 Nov to 4 Dec 2019.

## Conference/workshop talks presented (please name the event, dates – include link/s)

* Kirstie Whitaker presented at the "Can opening up research help drive innovation?" event hosted by Springer Nature and the British Library on 1 November 2019.
  * https://natureecoevocommunity.nature.com/users/59876-ruth-milne/posts/54547-can-opening-up-research-help-drive-innovation 
  * Slides: https://doi.org/10.5281/zenodo.3524883 
* Georgia Aitkenhead presented at the "Better Science through Better Data" conference hosted by Springer Nature on 6 November 2019.
  * https://www.springernature.com/gp/campaign/scidata#c17241126
  * Slides: https://doi.org/10.5281/zenodo.3530453 
  * Recording: https://www.springernature.com/gp/campaign/scidata#c17241126 

## Papers submitted or published (include link/s)

* NA

## Articles/blogs/press releases published (include link/s) 

* NA

## Software/code/tools/methods developed/released (include link/s)

* NA

## New datasets created/accessed 

* Data submitted from our “always open” google form is available in our GitHub repository at https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/community-recommendations/GoogleFormResponses.pdf.
  * This is publicly available under an open creative commons attribution (CC-BY) license.

## External engagement, influence, impact (Academic/ industry/ government/ public/ international)

* We have been approached by representatives of a uniformed youth group for information on how they can be more inclusive of neurodiverse populations.

## Funding: Further funding, leveraged funding/support, in-kind contributions

* NA

## Patents (drafted/applied for/granted)

* NA

## Awards/recognition

* NA

00-project-documentation/communication/reports/turing-health-quartery-updates/autistica-project-updates-q2-2019_20.md METASEP
# Turing Health Programme Update: October 2019

***Covering activity 1 July 2019 to 30 September 2019***

*Some information has been redacted as it pertains to internal Turing Institute events that we do not have permission to make publicly available.*

## Project information

* **Project title**: Using citizen science to help autistic people navigate the world 
* **Lead investigator**: Kirstie Whitaker (University of Cambridge/Turing Research Fellow)
* **Research associate**: Georgia Aitkenhead (Turing Institute)
* **Funding**: Autistica
* **Start date**: 20 December 2018
* **Projected end date**: 1 May 2021
* **Turing website**: https://www.turing.ac.uk/research/research-projects/citizen-science-platform-autistica
* **GitHub repository**: https://github.com/alan-turing-institute/AutisticaCitizenScience
* **Project website**: https://alan-turing-institute.github.io/AutisticaCitizenScience

## Notable activity/outcomes in research progress


### Online collaboration

We have had additional collaboration from members of the autistic community on our online channels, including GitHub and our Google Forms survey.
Guidelines for assessing the dataset have been co-produced with an autistic collaborator via. the GitHub repository
•	There are now 40 people on the project newsletter mailing list. Archives of monthly updates from October and November are available at https://tinyletter.com/AutisticaTuringCitizenScience/archive).
•	The project tasks have been turned into GitHub issues and are organised into milestones and labelled for ease of collaboration. 


Members of the autistic community have contributed to the project via channels including GitHub issues, and an "always open" Google Forms survey: [https://bit.ly/AutisticaTuringCitSciForm](https://bit.ly/AutisticaTuringCitSciForm).
The data has been consented to be made publicly available and is available (after moderation for accidental personal information disclosure) at in our GitHub repository at [community-recommendations/GoogleFormResponses.pdf](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/community-recommendations/GoogleFormResponses.pdf).

There are 40 people on the project newsletter mailing list.
Archives of an update from November is available at [https://tinyletter.com/AutisticaTuringCitizenScience/archive](https://tinyletter.com/AutisticaTuringCitizenScience/archive).

All documentation is available and licenced for re-use in the project’s GitHub repository including:

* Contributing guidelines: [CONTRIBUTING.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CONTRIBUTING.md)
* A code of conduct: [CODE_OF_CONDUCT.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/.github/CODE_OF_CONDUCT.md)
* Guidance on safeguarding: [project-management/building-a-safe-community.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/project-management/building-a-safe-community.md)
* A values statement: [project-management/project-values.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/project-management/project-values.md)  
* Information on data management: [project-management/data-management.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/project-management/data-management.md)
* Planned outputs from the research: [project-management/planned-outputs.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/project-management/planned-outputs.md)

### Participatory co-design activities

We ran three focus groups with autistic people, their families and carers, to gather feedback from the community.
These focus groups were hosted at Fujitsu and included developers with and without personal connections to autism. 
Members of Autistica’s Insight Group were paid £75 each for their time.
During the focus groups we asked each participant to describe their motivations for supporting the platform to ensure our work is aligned with their needs.
We demonstrated the first iteration of the citizen science platform and discussed ways to make sure that it was accessible for as many people as possible.
The conversations also included moderation of content on the platform, soliciting informed consent from autistic people with learning difficulties, contributing pathways to designing the platform, an explanation of open source and transparent software development.

### Pro-bono support from Fujitsu

Autistica are Fujitsu's charity partner (https://www.fujitsu.com/uk/about/local/corporate-responsibility/charity-partner).
Researchers are liaising with a dedicated development team from Fujitsu, who have begun to build early prototypes of the user interface.
All work is being undertaken publicly on GitHub (https://github.com/fjAutisticaCitizenScience/AutisticaCitizenScience). 
In addition to providing web development support Fujitsu hosted the three focus groups in September 2019 at their offices in London.

### Software and infrastructure development

A prototype of the backend infrastructure has been developed in collaboration with Bastian Greshake Tzovoras, Director of Research at Open Humans Foundation (https://www.openhumans.org).
It is publicly hosted at [https://autistica-demo-deployment.herokuapp.com](https://autistica-demo-deployment.herokuapp.com) and available under an open source licence on GitHub [https://github.com/alan-turing-institute/autistica-filemanagement-demo](https://github.com/alan-turing-institute/autistica-filemanagement-demo).

### End-user engagement

We have been approached by a number of influential organisations who are interested in using the outcomes from the focus groups and the citizen science project itself to understand how they can implement recommendations from the research to improve the lives of autistic people.

## Presentations

Georgia Atikenhead and community member Thomas Augur presented the project at the British Library’s National Inclusion Week community event.
They engaged with British Library staff to discuss how the research could have positive impact on the lives of neurodivergent people and demonstrated how to get involved with the project.
00-project-documentation/communication/reports/turing-health-quartery-updates/README.md METASEP
This folder contains reports from 2019, these reports are not done anymore. 

00-project-documentation/communication/reports/sprint-reports/sprint-9.md METASEP
# Sprint Report: 9

**Dates: 03092020 - 23092020**

This file contains reports of work completed during Fujitsu team sprints.


### Issues closed (Ready for review) Design Issues

These tasks were closed during the sprint.

* [`#347`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/347): Landing Page Improvements - Page Restructure
* [`#348`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/348): Landing Page Improvements - Definition of Open Humans
* [`#345`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/345): Accessibility New Icon
* [`#340`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/340): Accessibility Page Summary Screen Reader 
* [`#339`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/339): Accessibility More Selective  Screen Reader
* [`#350`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/350): Experience Page Improvements - Section Titles & New Section Other
* [`#355`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/355): Experience Page Improvements - Accessibility

These tasks were added to Ready for testing during the sprint.

* [`#341`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/341): Accessibility - Colour Scheme 
* [`#342`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/342):Accessibility - Visual Impairment Function
* [`#343`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/343):Accessibility - Contrast Function
* [`#344`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/344):Accessibility - Font Size Increase Function



### Issues progressed (General Issues)

Progress was made on these tasks but they were not closed during the sprint.
* [`#349`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/349): Experience Page Improvements - Definition of the type of experiences we are trying to capture
* [`#358`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/358): User Testing Handover
* [`#353`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/353):  Experience Page Improvements Upload
* [`#346`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/346): Accessibility - Visual Supports 
* [`#338`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/338): Accessibility - Voice to Text

### Dev board / Prototype 

In Development / Progress
Progress was made on these tasks but they were not closed during the sprint.
* [`#24`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/24): Deploy platform somewhere useful 
* [`#23`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/23): Develop non-verbal pictorial experience editor 
* [`#7`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/7):  Develop general documentation viewer control 


In pull requests (awaiting review)
* [`#6`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/6): Development Modular Alerts for Timeout Save
* [`#20`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/20): Component Gallery


Ready for testing 

* [`#19`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/19): Develop user profile type selection control 
* [`#18`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/18): Develop landing page footer
* [`#17`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/17): Develop hamburger menu component
* [`#16`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/16): Develop language selector 
* [`#15`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/15): Develop layout implementation of the landing page Hero / Jumbotron 
* [`#14`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/14): Develop newsletter subscription control 
* [`#13`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/13): Develop submitted experiences viewer control 
* [`#12`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/12): Implementation of landing page header
* [`#11`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/11): Develop layout of landing page function boxes
* [`#9`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/9): Develop add your experience page component 


### Conclusions:
Good progress with wireframing of design feedback from the community<br> 
Addition of community feedback to created issues by Katharina Kloppenborg<br> 
Clear process for disseminating of work to the development team is going from strength to strength<br>
Development team still demonstrating good channels of communication & positive responses<br>
Further prioritisation of user stories needed with clients input<br>
Thomas & Daniel are exploring AWS Server so the platform can be deployed - accessed by the community<br>
Blue Hat Associates attending daily stand-ups<br>
Request to use OH Slack Channel<br>
Further work around OH Data Flow from George<br>
Non-Verbal Communicator development work in progress from Paul<br>


### Challenges:
No challenges were highlighted in this sprint.

### Request for community feedback:
Feedback is requested from the community on the following tasks.
  * Link to video: [https://youtu.be/vRm5BaR7fKA](https://youtu.be/vRm5BaR7fKA
)


00-project-documentation/communication/reports/sprint-reports/sprint-8.md METASEP
# Sprint Report: 8

**Dates: 13082020 - 31082020**

This file contains links to the Autistica Presentation which was given by the team on the 26082020. It was agreed this would replace the need for a standard report and 
the standard Sprint Video Demos. 


### Autistica Presentation
Overview of Works Sprints 1 - 8

###Presentation of Design
 * Link to video: [https://youtu.be/pX66xqRZYW4] (https://youtu.be/pX66xqRZYW4)


###Presentation of Development Work
  * Link to video: [https://youtu.be/MY9nLqf8dtI] (https://youtu.be/MY9nLqf8dtI
)

  


00-project-documentation/communication/reports/sprint-reports/sprint-7.md METASEP
# Sprint Report: 7

**Dates: 23072020 - 12082020**

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the [agile-opensource-workflow.md](project-management/agile-opensource-workflow.md) and [sprint-demo-requirements.md](project-management/sprint-demo-requirements.md) files in the [project-management](project-management) directory.

### Issues closed (Design Issues)

These tasks were closed during the sprint.

* [`#320`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/320): Design Issues: New experience publication moderation component
* [`#319`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/319): Design Issues: Page Tag-lines (Ref Instructional Page Features ref Tag-lines & Slogans)
* [`#318`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/318): Design Issues: General documentation viewer control (Ref - Answer Book Viewer, Xojo, WP Staff Policies Plugin, Input Defined) 
* [`#263`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/263): Design Issues: Sanctuary location categories, Split into 4 Sections, 1. Users location plotted  
2. Sanctuaries Plotted within radius from the users location
3. Search / Filter of categorised sensory mapped events  
4. Mapped Experience Categories - to the location of the user
* [`#322`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/322): Design Issues: Develop general documentation viewer control list / panels option view


### Issues progressed (General Issues)

Progress was made on these tasks but they were not closed during the sprint.
* [`#315`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/315): Update Turing Master Branch With Fujitsu Documentation
* [`#325`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/325): Make finding and understanding code easier (Dependencies & Installation notes)
* [`#305`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/305): 
Community Involvement: GitHub Audit Update 
* [`#311`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/311): User Feedback for Sprint 6 - Clickable prototype https://bit.ly/CSP_Sprint_6_Prototype
* [`#307`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/307): Translate focus group requirements into issues, Milestones Added to Github - linked to written issues - Thomas
* [`#320`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/320): George Issue 320. This is a larger piece of work related to Open Humans - passing data into web templates - involving the merging user data into the platform. Dev Outputs (Paul,George, Thomas)


### Conclusions:
Further community engagement supported by Katharina Kloppenborg 
Narration to Sprint Videos is working well 
Clear process for disseminating of work to the development team is going from strength to strength
Development team still demonstrating good channels of communication & positive responses
Further prioritisation of user stories needed with clients input
User Testing undertaken and related planning by Katharina Kloppenborg  
Blue Hat Associates attending daily stand-ups
Sharing & creation of Slack Channel with partners
Further coding standards set and the sharing of best practice within development team  around OH Data Flow
New Collaborators,Blue Hat Associates - Digital Transformation Specialists, Rob Gill, Partner & Daniel Burnett, Development. Blue Hat Associates Assigned to Slack Channel 
Proposed Sprint 8 Actions - Complete full review of prototyped work by the developers, Fujitsu Project Progress
Developers to review each others work and test  
Further clean up of of Github posts
Processing of User Feedback findings
Stories to be taken into the Sprint to be defined in early September by Autistica


### Challenges:
No challenges were highlighted in this sprint.

### Request for community feedback:
Feedback is requested from the community on the following tasks.
  * Link to video: [https://youtu.be/3a3A1BxFBUU](https://youtu.be/3a3A1BxFBUU
)


00-project-documentation/communication/reports/sprint-reports/sprint-6.md METASEP
Sprint Report: 6

Dates: 7 July 2020 – 22 July 2020

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the agile-opensource-workflow.md and sprint-demo-requirements.md files in the project-management directory.
Issues closed

These tasks were closed during the sprint.

    #299: Prototype: Dashboard Notifcations
    #290: Prototype: Dashboard - Community Recommendations
    #297: Prototype: Screen Reader - review of focus groups 
    #296: Prototype: Sound Submit Prompt
    #294: Prototype: Experience Submission
    #262: Prototype: Upload Image / Sound 
    #188: Create a community involvement strategy

Issues progressed

Progress was made on these tasks but they were not closed during the sprint.
  
    #261: Short Detail Submission Wireframe Review
    #310: URL Specification
    #307: Translate focus group requirements into issues 
    #311: Welcome Katharina Kloppenborg
    #274: Make it easier for contributors
    #305: Github Audit
    #273: Research Festival Q&A
    #292: Modular Alerts Defined by Data
    Design Considerations - liked to Research Festival Q&A Session and Re-Review of Focus Groups Findings 
   

Need Discussion:

    #307: Translate focus group requirements into issues
    #263: Sanctuary location categories
    #261: Short Detail Submission Wireframe Review
    #204: Gather feedback on videos each sprint

Issues not progressed

    #263: Sanctuary location categories
    #173: Prototype: Develop paired down secured engagement component - add to about page 

Issues opened

These tasks were opened during the sprint but no work was done to address them.

        #111: Moderation Features 
              Further profile / demographic related works 
              Interfacing with OH API's
              Progressing works for review - testing of functionality of coded components 

Challenges

No challenges were highlighted in this sprint.
Request for community feedback

Feedback is requested from the community on the following tasks.

    #182: issue to collect feedback on sprints
        Link to video: https://youtu.be/UAon_KHBaMM

00-project-documentation/communication/reports/sprint-reports/sprint-5.md METASEP
# Sprint Report: 5

**Dates: 9 June 2020 – 29 June 2020**

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the [agile-opensource-workflow.md](project-management/agile-opensource-workflow.md) and [sprint-demo-requirements.md](project-management/sprint-demo-requirements.md) files in the [project-management](project-management) directory.

### Issues closed

These tasks were closed during the sprint.

* [`#167`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/167): Prototype: Implementation of landing page header
* [`#170`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/170): Prototype: Develop layout implementation of the landing page Hero/Jumbotron component 
* [`#171`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/171): Prototype: Develop hamburger menu component
* [`#172`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/172): Prototype: Develop landing page footer
* [`#236`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/236): Prototype: Component Gallery


### Issues progressed

Progress was made on these tasks but they were not closed during the sprint.

* [`#160`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/160): Create a README.md file which collates all of the documentation on how all user stories are created
* [`#163`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/163): List of questions for community
* [`#166`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/166): Translatable platform
* [`#169`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/169): Prototype: Develop layout of landing page function boxes
* [`#174`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174): Prototype: Develop "add your experience" page component
* [`#231`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/231): Prototype: Develop stepped user journey control




Need Discussion:

* [`#176`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/171): Document the process of how we will get feedback from the community
* [`#179`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/179): Clarify how people can give feedback on the sprint demo video
* [`#188`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/188): Create a community involvement strategy 
* [`#204`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/204): Gather feedback on videos each sprint



### Issues not progressed


* [`#145`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/145): Functional testing guidelines
* [`#173`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174): Prototype: Develop paired down secured engagement component



### Issues opened

These tasks were opened during the sprint but no work was done to address them.

* [`#249`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/249): Development tooling and project management training documentation



 

### Challenges

No challenges were highlighted in this sprint.

### Request for community feedback

Feedback is requested from the community on the following tasks.

* [#182](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/182): issue to collect feedback on sprints 1 & 2
  * Link to video: [https://youtu.be/GWvf1KbF5GE](https://youtu.be/GWvf1KbF5GE)

00-project-documentation/communication/reports/sprint-reports/sprint-4.md METASEP
# Sprint Report: 4

**Dates: 19 May 2020 – 8 June 2020**

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the [agile-opensource-workflow.md](project-management/agile-opensource-workflow.md) and [sprint-demo-requirements.md](project-management/sprint-demo-requirements.md) files in the [project-management](project-management) directory.

### Issues closed

These tasks were closed during the sprint.

* [`#167`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/167): Prototype: Implementation of landing page header
* [`#170`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/170): Prototype: Develop layout implementation of the landing page Hero/Jumbotron component 
* [`#171`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/171): Prototype: Develop hamburger menu component
* [`#172`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/172): Prototype: Develop landing page footer
* [`#236`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/236): Prototype: Component Gallery


### Issues progressed

Progress was made on these tasks but they were not closed during the sprint.

* [`#160`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/160): Create a README.md file which collates all of the documentation on how all user stories are created
* [`#163`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/163): List of questions for community
* [`#166`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/166): Translatable platform
* [`#169`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/169): Prototype: Develop layout of landing page function boxes
* [`#231`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/231): Prototype: Develop stepped user journey control




Need Discussion:

* [`#176`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/171): Document the process of how we will get feedback from the community
* [`#179`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/179): Clarify how people can give feedback on the sprint demo video
* [`#188`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/188): Create a community involvement strategy 
* [`#204`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/204): Gather feedback on videos each sprint



### Issues not progressed


* [`#145`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/145): Functional testing guidelines
* [`#173`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174): Prototype: Develop paired down secured engagement component
* [`#174`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174): Prototype: Develop "add your experience" page component


### Issues opened

These tasks were opened during the sprint but no work was done to address them.

* [`#249`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/249): Development tooling and project management training documentation



 

### Challenges

No challenges were highlighted in this sprint.

### Request for community feedback

Feedback is requested from the community on the following tasks.

* [#182](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/182): issue to collect feedback on sprints 1 & 2
  * Link to video: [https://youtu.be/0VXnqlS94Oo](https://youtu.be/0VXnqlS94Oo)

00-project-documentation/communication/reports/sprint-reports/sprint-2.md METASEP
# Sprint Report: 2

**Dates: 31 March 2020 – 27 April 2020**

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the [agile-opensource-workflow.md](project-management/agile-opensource-workflow.md) and [sprint-demo-requirements.md](project-management/sprint-demo-requirements.md) files in the [project-management](project-management) directory.

### Issues closed

These tasks were closed during the sprint.

* [`#87`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/87): Onboarding Deck for upload
  * Assocated pull requests: [`#137`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/137)
* [`#91`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/91): Create Kanban style PM page with GitHub projects
* [`#92`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/92): Write requirements document to define Fujitsu's deliverables
  * Assocated pull requests: [`#96`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/96)
* [`#98`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/98): Make sure all Fujitsu team members have GitHub accounts and are named as collaborators on this repository
  * Assocated pull requests: [`#126`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/126)
* [`#103`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/103): Create Wireframes
  * Assocated pull requests: [`#102`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/102)
* [`#116`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/116): Create sprint 1 demo video
* [`#121`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/121): Add documentation of recent meetings to GitHub repo
  * Assocated pull requests: [`#121`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/121), [`135`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/135)
* [`#128`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/128): Update timelines for agile workflow process
  * Assocated pull requests: [`#142`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/142)
* [`#132`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/132): Document FJ meeting dates
  * Assocated pull requests: [`#156`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/156), [`#123`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/123)
* [`#147`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/147): Publish google doc with user stories on main repo
  * Assocated pull requests: There was no associated pull request, this issue was closed with no action.
* [`#149`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/149): Add agendas for future meetings
 * Assocated pull requests: [`#156`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/156), [`#144`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/144) 

### Issues progressed

Progress was made on these tasks but they were not closed during the sprint.

* [`#74`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/74): GDPR compliance
* [`#84`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/84): Gather Platform Requirements
  * Assocated pull requests: [`#130`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/130)  
* [`#101`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/101): Create a guideline for how the 1:1 demonstration/user input sessions run
* [`#120`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/120): User Testing Plans and Resources
  * Assocated pull requests: [`#126`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/126), [`#115`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/115), [`#119`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/119)
* [`#129`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/129): Get comfortable with Github
* [`#138`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/138): TA-feedback-03-20-2020
* [`#148`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/148): Turn user stories from google docs into issues on Github
* [`#159`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/159): Explain project management swim lanes  
* [`#177`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/177): Create a retrospective form
* [`#180`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/180): Create sprint 2 report
  * Assocated pull requests: [`#141`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/141), [`#115`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/115)

### Issues opened

These tasks were opened during the sprint but no work was done to address them.

* [`#145`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/145): Functional testing guidelines
* [`#148`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/148): Turn user stories from google docs into issues on Github
* [`#158`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/158): Alan Turing feedback on Demo
* [`#160`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/160): Documentation for user stories
* [`#163`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/163): List of questions for community
* [`#166`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/166): Translateable platform
* [`#167`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/167): Implementation of landing page header
* [`#168`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/168): Implement wireframe landing page
* [`#169`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/169): Develop layout of landing page function boxes
* [`#170`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/170): Develop layout implementation of the landing page Hero/Jumbotron component
* [`#171`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/171): Develop hamburger menu component
* [`#172`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/172): Develop landing page footer
* [`#173`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/173): Develop paired down secured engagement component
* [`#174`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174): Develop 'add your experience' page component
* [`#175`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/175): Decide on landing page strapline
* [`#176`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/176): Document the process of how we will get feedback from the community

### Challenges

The team met the following challenges or blockers during this sprint.

* Due to the current global pandemic situation, coordination across the teams and the community has been slower than we would expect.
* We need to better understand how best to gain feedback as we haven't received enough feedback from the community 
  * Related to issues: [#174](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174), [#158](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/158)
  * we now have a new member (Paul) in the Fujitsu team with autistic contacts from his personal experiences. 
  * We will share the links to the reports and demos in the monthly newsletters
* Some issues were blocked due to Autistica having other priorities within the current pandemic
  * Related to issues: [#120](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/174), [#158](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/120)

### Request for community feedback

Feedback is requested from the community on the following tasks.

* [#182](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/182): issue to collect feedback on sprints 1 & 2
  * Link to video: [https://youtu.be/A_6uOwFZRfo](https://youtu.be/A_6uOwFZRfo)

00-project-documentation/communication/reports/sprint-reports/sprint-10.md METASEP
# Sprint Report: 10

**Dates: 28092020 - 14102020**

This file contains reports of work completed during Fujitsu team sprints.

### Issues closed (Ready for review) Design Issues

These tasks were closed during the sprint.

* [`#338`] (https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/338):
Accessibility Voice to Text
* [`#353`] (https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/353):
Experience Page Improvements Upload
* [`#347`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/347): Landing Page Improvements - Page Restructure


These tasks were added to Ready for testing during the sprint.

* [`#341`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/341): Accessibility - Colour Scheme 

* [`#342`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/342):Accessibility - Visual Impairment Function

* [`#343`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/343):Accessibility - Contrast Function

* [`#344`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/344):Accessibility - Font Size Increase Function



Dev Board / Prototype


In Development / Progress (Prototype Feedback)

Structure 

* [`#29`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/29):
- Moderation Page

* [`#30`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/30): 
- User Experience Form - Showcasing Solutions in a more interactive manne

* [`#25`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/25):
- New Experience Publication Moderation Component 

* [`#26`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/26): 
- Page Tagline 

* [`#35`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/35):
- How it works 

* [`#33`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/33):
- Secondary Banner Component Description

* [`#31`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/31):
- Defined Profile component description

* [`#34`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/34):
- Navigation Bar

* [`#24`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/24):
- Deploy Somewhere Useful AWS Account - http://deplo-autis-udrg410qq9qr-1321397698.eu-west-2.elb.amazonaws.com/#

* [`#23`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/23):
- Develop non verbal pictorial experience editor 

* [`#7`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/7):
- Develop general documentation viewer control

* [`#27`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/27): 
- Upload Image




In pull requests (awaiting review)

0


Ready for testing (Testing started now by contributor Paul Mitchell)

* [`#19`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/19):
Develop user profile type selection control 

* [`#18`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/18):
Develop landing page footer

* [`#17`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/17):
Develop hamburger menu component 

* [`#16`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/16):  
Develop language selector 

* [`#15`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/15):
Develop layout implementation of the landing page - Hero / Jumbotron Component 

* [`#14`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/14):
Develop newsletter subscription control 

* [`#13`](https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/13):
Develop submitted experiences viewer control 

* [`#12`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/12):
Implementation of landing page header

* [`#11`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/11):
Develop layout of landing page function boxes

* [`#9`] (https://github.com/alan-turing-institute/AutisticaPlatformPrototype/issues/9): 
Develop add your experience page component 


### Conclusions:

Good progress with wireframing of design feedback from the community 
Additions to prototype - Prototype MVP of Platform taking shape - navigation & updates as prototype feedback 
Dev working on working prototype - Page templates created & working navigation
Defined Profile Component Description
Leave taken by Dev
Tester, Paul Mitchell On-boarding - Project Overview 02102020
New, icon set Developed to cover icons used for non-verbal communicator
Further work around OH Data Flow from George
Non-Verbal Communicator development & Experience Image Upload from Paul


### Challenges:
No challenges were highlighted in this sprint.

### Request for community feedback:
Feedback is requested from the community on the following tasks.
  * Link to video: [https://youtu.be/vRm5BaR7fKA](https://youtu.be/Hz2gfEf5YkU
)

00-project-documentation/communication/reports/sprint-reports/sprint-1.md METASEP
# Sprint Report: 1

**Dates: 10 March 2020 to 31 March 2020**

This file contains reports of work completed during Fujitsu team sprints.

More details about this process can be found in the [agile-opensource-workflow.md](project-management/agile-opensource-workflow.md) and [sprint-demo-requirements.md](project-management/sprint-demo-requirements.md) files in the [project-management](project-management) directory.

## Issues closed

There were no issues closed during this sprint.

### Issues progressed

Progress was made on these tasks but they were not closed during the sprint.

Note that these tasks were managed through Google sheets and therefore do not have issue numbers.

They will be moved to issues in the GitHub repository in sprint 2.

* Cross Platform
* Caregiver Platform Access - User Type / UX Deliverables Persona / User  Journey Explored
* Interface Guidance
* Navigation
* Data Entry Area (Autistic User Add a Experience / View)
* Delete Published Experience
* UI / Colour Themes / Font as UX Deliverables Link - UI Kit
* Enable user to make a choice about allowing researchers to make further contact - Considered in User Journey screen to be wireframes in next sprint following community review and feedback of this demo
* URL Defined
* Simple Clean Design - Flowing Content
* Accessibility Theme

An MVP of home page components was designed offline to the following specification.

* URL Defined
* Header - Taking on own identity or that of similar to OH to create consistent experience for the user (demo screens)
* Hero - Aims To be Refined and aligned to project
* Constant Navigation - Initial navigation / titles added linked to wireframes and user journey
* Home page / Title / Aims / Core Functions
* Simple Clean Design - Flowing Content
* Accessibility Theme
* Sub Footer Safe & Secure - Tool Tips
* Footer - Copyright

The following outputs were created:

* Adaptive Wireframes: https://c6q95y.axshare.com
* Experience Screens: https://xsswhw.axshare.com
* UX Deliverables: research on designing for the Autistic community: https://blm1j3.axshare.com
* Tom's Review: https://2huje4.axshare.com

### Note on ways of working

Due to the structure of the project at the beginning of this sprint Chris Legg chose to create a wireframe to give a starting point to the development.
The user stories for this sprint were lifted from business goals and objectives built into the documentation.
At the time the community feedback user stories were in development and not accessible to the team so the links to the issue numbers couldn't be added without facing repetition later in the project.
This has caused a delay in the publishing of this sprint report.

### Issues Opened

These tasks were opened during the sprint but no work was done to address them.

* [#74](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/74): Platform Requirements - Established some further learning required around GDPR / what support will be required from OH

### Challenges

The team met the following challenges or blockers during this sprint

* Allocation of Developers to the project to aid full Sprint Delivery
* Sign off of internal video from marketing adds 72 hours to process of demo video review
* New tooling methods - GitHub over Jira / Slack - more visibility needed on method of upload and locations
* Misunderstanding around timely delivery of Sprint Demo Video for Sprint 1 given Developers not stood up and extended wireframe task set as first Sprint for UX and Developers
* MVP issue grouping from user stories

## Request for Community Feedback

Feedback is requested from the community on the following tasks:

* [#182](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/182): issue to collect feedback on sprints 1 & 2
* Link to Sprint 1 demo video: [https://youtu.be/4f6kn5HLysc](https://youtu.be/4f6kn5HLysc)
* Link to Sprint 2 demo video: [https://youtu.be/A_6uOwFZRfo](https://youtu.be/A_6uOwFZRfo)

00-project-documentation/communication/reports/sprint-reports/README.md METASEP
# Fujitsu sprint report

This file contains reports of work completed during Fujitsu team sprints. Since 2020 no more of these sprints are being done. 

Sprints are added in reverse order, and a template is available at the end of this file: [Sprint `N`](#sprint-n).

---

*The example below is a template format for each sprint report.*
*Text in italics is intended as a guide and should be removed from the updates as they are completed.*
*Text in `code format` should be replaced with the specific information for that sprint.*

## Sprint `N`

**Dates: `START` to `END`**

*Please make sure dates are in ISO standard format: `YYYY-MM-DD`.*

### Issues closed

These tasks were closed during the sprint.

*Please include and link to the accompanying pull request for each issue if applicable.*

* [`#i`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`i`): `issue title`
  * Assocated pull requests: [`#a`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/`a`), [`#b`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`b`)
  * *Additional notes if necessary.*
* [`#j`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`j`): `issue title`
  * Assocated pull requests: [`#c`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/`c`), [`#d`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`d`)
  * *Additional notes if necessary.*
*

### Issues progressed

Progress was made on these tasks but they were not closed during the sprint.

*Please include and link to the accompanying pull request for each issue if applicable.*

* [`#k`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`k`): `issue title`
  * Assocated pull requests: [`#e`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/`e`), [`#f`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`f`)
  * *Additional notes if necessary.*
* [`#l`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`l`): `issue title`
  * Assocated pull requests: [`#g`](https://github.com/alan-turing-institute/AutisticaCitizenScience/pull/`g`), [`#h`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`h`)
  * *Additional notes if necessary.*
*

### Issues opened

These tasks were opened during the sprint but no work was done to address them.

*Please include and link to the accompanying pull request for each issue if applicable.*

* [`#m`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`m`): `issue title`
  * *Additional notes if necessary.*
* [`#n`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`n`): `issue title`
  * *Additional notes if necessary.*
*

### Challenges

The team met the following challenges or blockers during this sprint.

*Please include and link to the accompanying issue or pull request for each challenge point.*

* `challenge/blocker description`
  * Related to issues: [`#o`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`o`), [`#p`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`p`)
  * *Additional notes if necessary.*
*
*

### Request for community feedback

Feedback is requested from the community on the following tasks.

*Please include and link to the accompanying issue or pull request for each request for feedback point.*
*This section should always include an issue to collect feedback on this sprint demo release.*

* [`#M`](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/`M`): issue to collect feedback on sprint `N`
  * Link to video: [`link-to-youtube`](`link-to-youtube`)
  * Link to sprint report: [SPRINTREPORT.md#`N`](SPRINTREPORT.md#sprint-`N`)
*
*

00-project-documentation/communication/reports/academic-updates/researchfish-updates-2021.md METASEP
# Researchfish Award for 7267 Turing Fellowship
*Dr  K Whitaker*
 
#### Award Title	
7267b
#### Research Organisation	
Alan Turing Institute
#### Funding Start Date	
2019-04-22
#### Funding End Date	
2021-04-30
#### Funding Value	
150000 GBP

### Award Abstract

#### Lay Summary

Autistica and the Alan Turing Institute are working together to build a participatory, citizen science project to gather data on how sensory processing affects autistic people’s navigation of the world.
Numerous studies into sensory processing and autism have confirmed that autistic people experience sensory processing differences, and that this can significantly impact their lives. 
One aspect which is not yet fully understood is how these differences affect the ways in which autistic people navigate different environments.  

This project is to build a platform to gather autistic people’s experiences of navigating their environment at scale.
Our goals are to better understand and represent the commonalities and individual differences in autistic people’s experiences navigating the world. 
We will identify the barriers they face and solutions to overcome these challenges.

The citizen scientists who contribute their data to this project will be autistic people, and their relatives and carers. 
The main target audience for this work are non-autistic people, including, but are not limited to, employers, friends and family, urban planners, architects and interior designers for hospitals, schools and community spaces.  

The work will be participatory from the ground up. 
All aspects of the project will be designed and developed in collaboration with members of the autistic community.
The platform will be developed under a free and open source license and will be built openly from the beginning. 
We commit to re-using – with credit – open source projects that already exist rather than re-inventing the wheel. 

The project will follow best-practice principles in open-source development, including extensive documentation for both users and contributors as well as an open governance structure. 
A diverse group of contributors of all levels of experience will be encouraged to join the community.  

The data will be FAIR (findable, accessible, interoperable and reusable) and made available under a managed access agreement for future research projects. 
A fine-grained consent model will be developed to support individual contributor’s personal preferences on how their data is used on the platform. 
No data will be shared without explicit consent from the citizen scientist who uploads it, or from the autistic person if a relative or carer is uploading the information. 
 
### Sections with Information 

#### [Academic meetings andd conferences attendance](#academic-meetings-and-conferences-attendance)	
#### [Software and technical products](#software-and-technical-products)	
#### [Further funding](#further-funding)
#### [Research tools and methods](#research-tools-and-methods)	
#### [Collaborations and partnerships](#collaborations-and-partnerships)	
#### [Patient and public involvement](#patient-and-public-involvement)	
#### [Research datasets, databases, and models](#research-datasets-databases-and-models)	
#### [Annual progress](#annual-progress)	
#### [Engagement activities](#engagement-activities)	
 
## Academic meetings and conferences attendance

**Conference Name**:	AMRC Delving into Digital Summit 

**Start Month**:	March

**Start Year**:	2019

**Location**:	National

**URL**:	https://www.amrc.org.uk/delving-into-digital-summit-27-march-2019

**Primary role:**	Oral presentation (not included in published conference proceedings)

**Description**	The project was presented to a mixture of patients, government, the NHS, industry, and academia at AMRC’s 2019 *Delving Into Digital* summit, with a focus on the reasons to address questions about sensory processing and autism as well as strategies for participatory science. The summit was addressed to practitioners in the digital health space, and focussed on sharing technologies and innovations.


**Position of attendee** Autistica Director of Science and research associate

#

**Conference Name**	*Autistica Discover Conference*

**Start Month**	June

**Start Year**	2019

**Location**	National

**URL**	https://www.autistica.org.uk/get-involved/research-conference

**Primary role** Oral presentation (not included in published conference proceedings)

**Description**	An annual, national research conference bringing together autism researchers, autistic people, relatives and carers to share their latest research and discuss how to make progress towards long, healthy, happy lives for autistic people.  

#

**Position of attendee** Research Fellow

**Conference Name**	OLS-third cohort 

**Start Month**	March

**Start Year**	2021

**Location**	Europe

**URL**	https://openlifesci.org/ols-3

**Primary role** Oral presentation

**Description**	A talk delivered by Georgia Aitkenhead, Suzanne Iwai, Sarah Markham and Otis Smith for the third cohort of OLS (Open Life Sciences), using AutSPACEs as a case study for participatory citizen science. 

Slides on Zenodo: https://zenodo.org/record/4651431. 
Recording on Youtube: https://www.youtube.com/watch?v=Vizk7fni5Eo

**Position of attendee** Researcher

#

**Conference Name**	CogX 2020

**Start Month**	June

**Start Year**	2020

**Location**	Europe

**URL**	https://zenodo.org/record/3885494

**Primary role** Session/Workshop chair/panel member

**Description**	Talk entitled "Research to empower: co-creating a citizen science platform”, delivered by Georgia Aitkenhead as part of a panel discussion hosted by Kirstie Whitaker for the “Tools, Practices, and Systems” of CogX 2020.  
CogX is a Global Leadership Summit and Festival of AI & Transformational Technology addressing the question, “How do we get the next 10 years right?""

**Position of attendee** PI; research associate

#

**Conference Name**	OLS-2 Graduation

**Start Month**	Dec

**Start Year**	2020

**Location** National

**URL**	https://openlifesci.org/ols-2

**Primary role** Oral presentation

**Description**	Open Life Sciences is a training programme for early stage researchers and young leaders interested in furthering their Open Science skills. They provide mentorship and support to develop exceptional open projects. AutSPACEs was one such project, and a presentation of the project was delivered for the graduation of the programme. 

**Position of attendee** Research associate and autistic citizen scientist. 

#

**Conference Name**: ‘Better Science through Better Data 2019'

**Start Month**	Nov

**Start Year**	2019

**Location**	Local/Municipal/Regional

URL	https://figshare.com/articles/media/Better_Science_through_Better_Data_2019_Programme_SciData19_/103 20056

**Primary role** Oral presentation

**Description**	In ‘Better Science through Better Data’ (#scidata19) Springer Nature and The Wellcome Trust partnered to bring together researchers to discuss innovative approaches to data sharing, open science and reproducible research, together with demonstrations of exemplary projects and tools. 
The Autistica project was chosen as one such exemplary project and was presented in a 15 minute lightening talk. 

**Position of attendee** Research Associate 

#

**Conference Name**	Mental Health Special Interest Group 

**Start Month**	Jan

**Start Year**	2019

**Location**	Local/Municipal/Regional

**Primary role**	Oral presentation

**Description**	A specialist meeting taking place in The Alan Turing Institute consisting of academics and professional practitioners specialising in using data to better understand mental health. 

**Position of attendee** Research Associate 

#

**Conference Name**	'Can opening up research help drive innovation?''

**Start Month**	Nov

**Start Year**	2019

**Location**	Local/Municipal/Regional

URL	https://sustainabilitycommunity.springernature.com /posts/54545-can-opening-up-research-help-drive-innovation

**Primary role**	Oral presentation

**Description**	Springer Nature in association with the British Library hosted an event exploring how Open Research can support researchers with developing solutions to meet the UN’s SDGs (Sustainable Development Goals) and tackle today’s global challenges such as climate change, poverty and ensuring health and wellbeing.

**Position of attendee**	Principle Investigator 

#

**Conference Name**	OLS-3 Expert Presentation

**Start Month**	Mar

**Start Year**	2021

**Location**	National

URL	https://openlifesci.org/ols-3

**Primary role**	Oral presentation

**Description**	The Open Life Sciences programme provides training for early stage researchers and young leaders interested in furthering their Open Science skills. 
A project researcher along with a number of autistic citizen scientists delivered a talk to upskill members of the programme in participatory and citizen science.

**Position of attendee** Research Associate and three autistic citizen scientists

#

**Conference Name**	Autistica Research Festival

**Start Month**	Jul

**Start Year**	2020

**Location**	Local/Municipal/Regional

**Primary role**	Oral presentation

**Description**	Talk delivered for the Autistica Research Festival 2020 by Dr. Kirstie Whitaker, Georgia Aitkenhead, Craig Hall, Thomas Stanley, Chris Legg, Otis Smith and Lucinda Marsden. 

The goal was to disseminate findings and values of the project with a highly relevant audience, and to demonstrate participatory science in action. 

**Position of attendee** PI, Researcher, Pro Bono Volunteers and Citizen Scientists

#

**Conference Name**	CogX 2020

**Start Month**	Jun

**Start Year**	2020

**Location**	National

**URL**	https://www.turing.ac.uk/events/cogx-2020

**Primary role**	Member of Committee

**Description**	Presentation delivered as part of a panel discussion hosted by Kirstie Whitaker to introduce the Turing's new “Tools, Practices, and Systems” programme during CogX 2020. CogX is a global leadership summit and festival of AI and transformational technology addressing the question, “How do we get the next 10 years right?”.

**Position of attendee** PI, Researcher, Pro Bono Volunteers and Citizen Scientists

#

## Software and Technical Products

**Select type of technical product.**	
Webtool/Application

**Short title or name for the product**.	
AutisticaCitizenScience repository

**Licenced**	
Yes (Open Source)

**Open Source license**	
Other

**Briefly describe technical product.**	
This repository holds project management tools, resources, and protocols for the Autistica project and provides an open audit of the project's progression and community involvement. 

**Select the year that this output was realised.**	2019

**Briefly describe notable impacts.**	The repository has been used for project management and to collaborate with autistic citizen scientists, offering important upskilling opportunities.

It also allows the ongoing work to be publicly available and easily shared with community members. 
This supports the open and participatory values of the project.

**URL.**	https://github.com/alan-turing-institute/AutisticaCitizenScience

**URL**	https://github.com/alan-turing-institute/AutisticaCitizenScience

**Digital ID** /

**Source Manual** /

**Publication ID**	609e4661a640e0.00782845

#

**Select type of technical product.**	
Webtool/Application

**Short title or name for the product**.	
AutSPACEs repository

**Licenced**	
Yes (Open Source)
Open Source license	MIT license

**Briefly descrive technical product**.	
This repository holds the code for the Autistica project and provides an open audit of the project's progression and community involvement.

**Select the year that this output was realised.**	2020

**Briefly describe notable impacts** This repository is being used to develop the platform. 
It includes a requirements list based on thorough community input from a diverse range of autistic participants, and issues derived from those requirements which support the platform development.

URL.	https://github.com/alan-turing-institute/AutSPACEs

Digital ID

Source	Manual

Publication ID	609e473c8daa52.54750515

#3

## Further Funding

**Funding Scheme**	Alan Turing Institute post-doc contract extensions

**Organisation Name**	Alan Turing Institute

**Type**	Fellowship

**Funding Currency**	GBP British Pound Sterling

**Funding Amount**	80000

**Consortium Funding Amount** £37,738.99

**Reference Number** /

**Start Month ** May

**Start Year**	2021

**End Month**	December

**End Year**	2021

#

## Research Tools and Methods

**Material Type**	Improvements to research infrastructure

**Material Name**	Participatory co-creation of a qualitative dataset. 

**Description**	The creation of the Focus Groups dataset was done using a new participatory method. A key was developed to highlight relevant categories individuals fall into as part of the dataset, a decision resulting from discussion sessions with the autistic community. The key was co-designed with Otis Smith, an autistic citizen scientist. In particular, Smith innovated a tag to distinguish between the direct and indirect reporting of experiences. 

**Provided to Others**	Yes

**Year First Provided** 2019

**Impact Description**	Differentiating betwen direct and indirect reporting is not a standard practice in qualitative research anaysis, but coud be a useful way of addressing a common complaint by autistic people that their experiences are often spoken about or over by others, and that this prevents them from being directly consulted and listened to. 

The value of making a distinction between direct and indirect reporting has been attested to by autistic people in subsequent discussion sessions. 

URL	https://github.com/alan-turing-institute/Autistica CitizenScience/tree/master/community-recommendations/focus-groups

Digital ID

Source	Manual

Publication ID	60995324995342.41724166
 
#

**Material Type**	Improvements to research infrastructure

**Material Name**	Collaborative, participatory, open citizen science 

**Description**	Designing a research methodology which supports autistic people to participate in an empowered way in open research to co-create a citizen science platform. 
This has required using a broad diversity of tools and protocols for research including tools such as GitHub, google forms, newsletters, individual Zoom sessions, co-working sessions, co-authoring, focus group consultations, and workshops. 
It is a method of continuous experimentation and improvement. The method is described in our repositories. 

**Provided to Others**	Yes

**Year First Provided**	2019

**Impact Description**	We have had powerful testimonials from participants involved in the project as to the impact it has had on their lives. 
The platform development is underpinned by a unique requirements doc and platform design which is directly attached to recommendations for the commnuity and which is openly published on GitHub. 

A diverse range of participatory collaborations have given autistic people platforms to have their voice heard and to have influence. 

URL	https://github.com/alan-turing-institute/Autistica CitizenScience

Digital ID

Source	Manual

Publication ID	609cf736a4d871.94051081

#
 
## Collaborations and Partnerships

**Collaboration Title**	
Civil Service secondment

**Partner Organisation Name**	
Her Majesty's Civil Service

**Contributed Financially**	
No

**In-kind contribution**	
Yes

**In-kind contribution currency**	
GBP British Pound Sterling

**Give an estimate of the in-kind value.**	
14,000

**Contributions Made**	
We have given a civil servant on the Digital Data and Technology (DDAT) civil service fast stream a six month secondment opportunity. 
We have provided her with one to one mentoring, opportunities for professional development, direct ownership over tasks, access to new communities and resources, an introduction to new areas of research, and experience and support with a number of technologies and online best practices. 

**Partner Contributions** The fast streamer seconded to The Alan Turing Institute has provided invaluable support in community management annd project management. She has worked strategically to provide high-level planning as well as detailed task management. Thus, via this secondment, the civil service is providing 6 months of pro bono support from an exceptional worker which has already resulted in substantial benefits.

**Year Commenced**	2021

**Year Ended**	Still Active

URL /	

**Resultant Outcomes**	The secondment is in the early stages, however outputs include:
* two succesfully run community co-working sessions, 
* a number of high-quality strategic documents for community involvement, 
* project promotion, and future steps; 
* important management support; 
* consistently high-quality, dependable support with a number of tasks, including repository management and community management. 

**Categorisation of impact**	Societal

**Formally Governed**	Yes

#
 
**Collaboration Title**	Expert contributions from CRI 

**Partner
Organisation Name**	Interdisciplinary Research Centre

**Contributed Financially**	No

**In-kind contribution**	Yes

**In-kind contribution currency**	EUR Euro

**Give an estimate of the in-kind value.**	2000

**Contributions Made**	We have shared our research with CRI, and provided them with a full presentation of the project and its aims by the Principle Investigator Kirstie Whitaker. We have also provided developmental internship opportunities for two CRI doctoral students, who have both been offered substantial support and mentorship from the research team.   

**Partner Contributions**	CRI has provided us with pro bono support from two highly skilled students at a doctoral level to run user-testing and develop the platform. They have also provided opportunities to disseminate the project's work and values which has been mutually beneficial. 

**Year Commenced**	2020

**Year Ended**	Still Active

**URL**	

**Resultant Outcomes**	
* Openly published user testing results with diverse autistic participants, as well as documentation for how other researchers could run them. https://github.com/alan-turing-institute/Autistica CitizenScience/tree/master/community-recommendations/user-tests.   
* Presentation for CRI on "Participatory citizen science to improve autistic people's lives'. DOI: 10.5281/zenodo.3766923.   
* Ongoing development support for AutSPACEs platform by a skilled intern.  

**Categorisation of impact**	Cultural

**Formally Governed**	Yes
 
#

**Collaboration Title**	Fujitsu pro bono support 

**Organisation Name**	Fujitsu

**Department**	Fujitsu Laboratories of Europe

**Contributed Financially**	Yes

**Contribution Currency**	GBP British Pound Sterling

**Contribution Amount**	800

**In-kind contribution**	Yes

**In-kind contribution currency**	GBP British Pound Sterling

**Give an estimate of the in-kind value**	333,000

**Contributions Made**	We have provided Fujitsu with a significant amount of researcher time. 
We have offered opportunities for development and upskilling for Fujitsu staff in open development, data management, GitHub, neurodiversity and participatory co-creation. 
We have also given Fujitsu an opportunity to help meet their own charity partnership objective, and supported them to deliver a public presentation about their work for Autistica's 2020 Autism Research Festival. 

**Partner Contributions**
Fujitsu have provided a team of agile developers to work pro bono on the platform. 
They have supported autistic people by remunerating them to take part in discussion sessions and user testing, as **well** as hosting these sessions. 
An autistic developer supported the growth of the project community by connecting researchers to an autistic group including members with diverse co-occuring conditions. 

**Year Commenced**	2019

**Year Ended**	2020
	
**Resultant Outcomes**	
* 08-07-2020: “Research to empower: co-creating a citizen science platform", delivered for the Autistica Research Festival 2020 by Dr. Kirstie Whitaker, Georgia Aitkenhead, Craig Hall, Thomas Stanley, Chris Legg, Otis Smith and Lucinda Marsden. 10.5281/zenodo.3935849.   
* 06-07-2020: “Participatory science to improve autistic people’s lives”, delivered by Kirstie Whitaker. 
* Talk given internally to Fujitsu on working together to build a participatory, citizen science platform. 10.5281/zenodo.3931533     
* Continued involvement put Autistica in a better position to renew their corporate partnership with Fujitsu.

**Categorisation of impact**	Economic

**Formally Governed**	Yes

#
 
**Collaboration Title**	OLS for Turing

**Partner Organisation Name** Open Life Science Limited

**Contributed financially** No

**In-kind contribution** Yes

**In-kind contribution currency** GBP British Pound Sterling

**Give an estimate of the in-kind value.**	20,000

**Contributions Made**	Six Turing community members led projects as part of the second cohort of the Open Life Science mentorship programme.    
Malvika Sharan, community manager for the Turing Way, facilitated and delivered trainings along side the other OLS co-founders. 

**Partner Contributions**	Open Life Science (https://openlifesci.org/) program mentors and trains individuals and stakeholders working in research organisations who want to promote Open Science practice in their communities. 
Participants of this 16-week mentoring & training program learn essential knowledge required to create, lead, and sustain an Open Science project, connect with members across different communities, backgrounds, and identities by sharing their experiences and expertise. 

The complete schedule and participation guidelines of the program are available at https://openlifesci.org/syllabus.   

**Year Commenced**	2020

**Year Ended**	Still Active

URL	https://github.com/alan-turing-institute/the-turin g-way/tree/master/open-life-science-mentoring

**Resultant Outcomes**	Under the Turing’s Tools, Practices and Systems Research Program, Open Life Science has collaborated with The Turing Way to deliver training and mentoring to interested members from The Alan Turing Institute who would like to join this program with individual or team projects. 
The program has been supported by a £10,000 grant from the Turing Institute to offer an opportunity to develop Open Science aspects in the projects that participants either already have been working on, or want to develop in the near future. 
Mentors will be preferably selected from The Alan Turing Institute but there will be a possibility to match projects with the right mentor from their current capacity. 
More information regarding the roles and benefits for the mentees and eligibility of a proposed project can be found on their website.

**Categorisation of impact**	Cultural

**Formally Governed**	No

#
 
**Collaboration Title**	Open Humans Foundation Collaboration
Partner

**Organisation Name**	Open Humans 

**Contributed Financially**	No

**In-kind contribution**	Yes

**In-kind contribution currency**	USD United States Dollar

**Give an estimate of the in-kind value**	6000

**Contributions Made**	The Turing research team has promoted Open Humans, grown the community, and given Open Humans opportunities for visibility and dissemination of their work and values. 
Through co-working we have also helped to test the accessibility and usability of their documentatation for open source contributors. 

**Partner Contributions**	
The Open Humans Foundation has provided a free, secure, backend infrastructure and data management system on top of which the AutSPACEs platform can be built. 
They have also provided support and guidancee throughout the project by offering expertise in data and agency, development support, answering queries, and closely co-working with us. 
Being a member of their community has been invalulable for AutSPACEs. 

**Year Commenced**	2019

**Year Ended**	Still Active

**URL**	https://github.com/alan-turing-institute/AutisticaCitizenScience

**Resultant Outcomes**	
* Prototype platform using Open Humans backend. Repository url: https://github.com/alan-turing-institute/autistica -filemanagement-demo  
* Private and public slack channels for AutSPACEs on Open Humans.  09-09-2020: The project was presented to the Open Humans community during an Open Humans community call. 

**Categorisation of impact**	Cultural

**Formally Governed**	No 

#
 
## Patient and Public Involvement

**Patient and public involvement	**Yes

**The way of patient and public involvement**	

* Prioritising the research question(s)
* Design of the research
* Management of the research
* Undertaking the research
* Analysing and interpreting the data generated by the research
* Writing up of the research
* Dissemination of research findings
* Implementing research findings or recommendations

**Give details of involvement of patients**	

Factors of success of patient involvement:	
* Involving people throughout the research cycle
* Effective building of relationships and trust
* Close and effective collaborative ways of working
* Good information, training and support
* Building on existing relationships
* Sufficient resources to support effective involvement
* Enthusiasm and commitment of all involved

**Other factors to successful involvement**

**Challenges of involvement** 
* Nature of condition can affect ability to be involved
* Small number of people or appropriate people are difficult to engage
* Lack of resources to support effective involvement
* Difficulty in finding appropriate ways to communicate and engage,Concerns about how 'representative' views are
* 
**Why was involving people challenging?**	
* Difference made by patient involvement	
Our research is fundamentally participatory, and we have actively engaged and recruited members of the affected community. 
This is a community of people on the autism spectrum, their relatives, carers, and allies. 

Their work has been core to a number of dimensions: determining the research question; setting the direction of the project; inputting their concerns and desired outputs; designing the methods of the study, co-authoring papers, attending stakeholder meetings, and strategising methods. 

As such, their involvement has been critical to the research direction, content, and progress. 

We remain committed to research for and by autistic people, and have been meticulous in ensuring diverse autistic people, including those with complex needs and co-occurring conditions, are involved throughout in a way which is respectful and empowering. 

Our ongoing platform development is also rigorously based on recommendations from the community.     
Furthermore, a key research goal has been to empower autistic participants through their involvement. 
There have been some highly significant outcomes for autistic individuals. Here is a selection:     
	* Autistic adult with epilepsy: after setbacks following illness and coronavirus disruptions, being inspired to enter into autism research, applying for a master's course, and delivering own research at a postgraduate-level conference.  
	* Autistic adult with dyspraxia: becoming a neurodiversity advocate at thier workplace and being inspired to apply for a secondment to The Alan Turinig Institute.  
	* Autistica adult and parent of autistic individual: being empowered to have her voice heard and to have a tangible impact on adjustments to environments to make them more neurodiverse in additional contexts.   
	* Autistic adult: found the project invaluable in dealing with mental health difficulties exacerbated by Covid-19.     

#
 
## Research Datasets, Databases and Models

**Material Typ**e	Dataset/Database/Collection of data

**Material Name**	Focus Group Community Recommendations 

**Description**	A valuable dataset containing priorities and requirements of the autistic community under an open license. 
This is a rich dataset containing nuanced views of diverse autistic citizen scientists. 
The dataset is available at the project’s GitHub repository.    
We developed guidelines for reading these documents with members of the autistic community using an iterative process. 
We gave all participants the opportunity to examine the dataset before releasing it, and gave them an option to incorporate feedback at this stage about the presentation and layout of the final dataset. 
No participants requested comments to be removed or altered.   

**Provided to Others**	Yes

**Year First Provided**	2019

**Impact Description**	This dataset has been used to guide the priorities and stratgies of the project as a whole and the development of the AutSPACEs platform. 
It is core to the project in that it provides rich, nuanced material from autistic people and the parents of autistic people. 
This is a crucial element of participatory science as it allows the research to be tailored to autistiic people's prioritise and needs. 
It also provides a record of the autistic participants' input, which is essential for both researcher accountability and participant recognition.

**UR**	https://github.com/alan-turing-institute/Autistica CitizenScience/tree/master/community-recommendatio ns/focus-groups
	
**Source**	Manual
**Publication ID**	60995074a34e32.95840444

#

## Annual Progress

Details of progress	01-04-2020 - 31-03-2021    

### Platform Development    

From April 2020 until mid-December 2020, work was ongoing with an agile development team provided by Fujitsu, Autistica’s corporate partner, who gave pro bono support.
During this time:  
* Various ways of working were iterated. 
* Agile/Open Source research methods were designed and implemented. * The protocols and theory were shared and explained to the team, and have been openly published on GitHub in the AutisticaCitizenScience repository.  
* This phase of development gave the opportunity for important experimentation and learning.  
* Accessibility research was undertaken by the Fujitsu team’s designer, Christopher Legg, whose work is openly published on the AutisticaCitizenScience repository. 
Much of this is relevant to ongoing designs and can be incorporated. 
This accessibility focussed research uses axshare.  
* 10 sprint reports were submitted by the Fujitsu agile team. 
They are published in the AutisticaCitizenScience repository.   
9 videos were released in order to showcase work done on the project by the agile development team. 
They are published in the AutisticaCitizenScience repository.  
5 sessions of user testing were run with a diverse group of autistic users, including those with co-occurring conditions such as learning difficulties, dyslexia, and anxiety. 
These sessions were done with the support of a doctoral student from CRI. 
They were adapted for individuals so those with complex needs could take part. 
The sessions were run virtually over Zoom, summarised, published on GitHub in note form, and used to iteratively modify the platform. 
They are available on the AutisticaCitizenScience repository.  
* The repository was redesigned to make it more accessible. This was done through a card sort, file restructuring, and input from autistic individuals.  

December 2020 saw the wrap up and handover of Fujitsu’s work. 
This initiated a new phase of design and development:
* A new AutSPACEs GitHub repository was set up under an open source license for the development of the platform. 
* A README was created that includes development and project information, resources and a step-by-step guide to building the platform locally. 
* A detailed Roadmap is now being produced.   
* A new set of wireframes were created and then iterated. First as a sketch, and then a more detailed version created using Figma. 
* To start development, an MVP or “simplified” version of that design was also created using Figma. This was then turned into a basic clickable html wireframe to demonstrate how interaction on the platform might function.   
* A requirements list for the platform was created by combining multiple sources of participatory input, including focus groups, the results of user testing, the results of one-to-one collaboration work, and online feedback. 
* This is published online on the AutSPACEs repository.  
* A series of issues reflecting the requirements were written on Asana and moved gradually over to GitHub. 
These issues are also available on Trello. 
All issues worked on will be publicly visible on the AutSPACEs GitHub repository.  
* A new developer who provides pro bono support to further develop the platform, was brought on board. 
He has so far contributed through a combination of independent working, upskilling others, and co-working with researchers.  
* An infrastructure skeleton for the AutSPACEs platform has been built using the Django web development framework, and has been successfully integrated with the backend provided by Open Humans. 
This completes the first milestone of this phase of platform development.  
* By May 2021, the second milestone is underway, with work still to be done on clarifying tasks in issues so they are suitable for an open source community of developers. 
A project board was set up to track overall progress. 
This is available in the AutSPACEs repository. 
A project board was set up to track overall progress. This is available in the AutSPACEs repository.
* We were delighted to have an intern and a Google Summer of Code student join us to further develop the platform. 
* Open Source components which are accessible to diverse users, user-tested, and well-documented for reuse, have been researched for potential use in the ongoing development of the platform.  
* Accessibility checklists based on GOV.UK guidance have been created and built into issues so that platform releases meet these requirements.  
* We have worked with autistic collaborators to redesign elements of the project management repository including the labelling of issues and milestones, to make them more suitable to autistic participants. This work is ongoing.  
* An online focus group and co-creation session was run on the 30th November to understand issues and priorities concerning the platform moderation process. These discussions included a combination of autistic people, the parents of autistic people, and those who were in both categories. 
* The session has now been fully transcribed (107 pages of human transcription). These will now be summarised, grouped, and shared with participants for their review and consent. 
They will be openly published on GitHub in the AutisticaCitizenScience repository. 
* Further interest and discussions were instigated as a result of the moderation session and engagement with researchers has continued. This has provided further insights and creates the possibility of even deeper community involvement and direction-setting in the moderation process. Two autistic citizen sciences are now leading on the moderation co-design work on GitHub using participatory co-creative methods.  
* The “skeleton” code of conduct was created by combining the guidelines for the Autistica/Turing citizen science project using open source best practices, with the code of conduct developed by autistic people for the AutAngels autistic community.
This is now being openly worked on by researchers including autistic collaborators in an open Google Doc and via. co-working sessions and GitHub.
* Issues and Pull requests: from April 01 2020 - March 31 2021:    114 Pull Requestss were made to the AutisticaCitizenScience repository. 
107 PRs were closed, of which 88 were merged.  
291 issues were created in the AutisticaCitizenScience repository and 210 issues were closed.  
29 PR were made to the AutSPACEs repository. 
26 PR were closed, of which 17 were merged. 
(The high number of closed PRs is due to a number of individual PR for different pages of a wireframe, which were replaced by a single, combined PR)  
92 issues created on the AutSPACEs repository and 44 issues were closed.     

#

### Software/code/tools/methods developed/released:     

Methods, protocols, code, and other work as detailed above has been publicly released and is available under an open license on the AutisticaCitizenScience repository and the AutSPACEs repository.    

#

### Outreach and collaboration     

* The project was accepted into the second cohort of the Open Life Sciences leadership programme to be developed over the course of 3 months with the support of expert mentors and peers. 
The project's research associate graduated from the programme on 17th December 2020. 
* Outputs included an Open Canvas, a road map,  a detailed project people, skills, and resources map, structuring and initiating work on a chapter for The Turing Way, and valuable upskilling and networking with an open source community.   
* A highly positive working relationship was formed with the OLS mentor, who is providing ongoing mentorship to project researchers.  * Contribution to The Hidden REF: The Hidden REF is a movement designed to publicly credit and support contributors to science who are often under-acknowledged. 
* Based on learning gained from the participatory science, we proposed a new category of submissions for The Hidden REF called "lived experience". 
* We hope it will help recognise the value participants bring to science through their personal expertise, gained through their daily lives.    
* The project was submitted and accepted by the INCF to receive intern applicants for Google Summer of Code. An exercise was created as a GitHub issue to assess applicants’ ability to work on the platform and understand the complexity of the project. Two applicants completed our assessment. We are delighted that a GSOC student has met our requirements and has now been accepted to join the project over the summer. 
* Bi-weekly community meet-up and co-working sessions were set up.
These involve collective discussion and group work among a diverse group of participants, including researchers, developers, and autistic citizen scientists. 
Additional outreach efforts and accommodations have been made for those with co-occurring conditions, such as autism and anxiety, autism and dyslexia, autism and learning difficulties and autism and dyspraxia.
A highly skilled civiil service fast streamer who joined in April has now been able to begin succesfully leading these meet-ups, as well as more generally the community management of the project.
* Work is ongoing on a chapter for The Turing Way on Participatory Science, using AutSPACEs as a case study. 
The chapter is being co-written with autistic researcher and strategist who joined the projcet as a citizen scientist.      
* Findings and learning from the project have been shared with groups throughout The Alan Turing Institute. 
A participatory science co-working group was set up with researchers from Google DeepMind and learning from the project was shared with members. 
Findings and learning from the project have been shared with groups throughout The Alan Turing Institute. 
A participatory science co-working group was set up with researchers from Google DeepMind and learning from the project was shared with members. 
The project's research associate became a co-lead of the Social Data Sciences Special Interest Group and has presented this project with group members, as well as a facilitating collaborator from The Open Humans Foundation to share knowledge with The Turing.

#

## Participatory Science    
We remain committed to research for and by autistic people, and have been highly meticulous in ensuring diverse autistic people, including those with complex needs or co-occuding conditions, are involved throughout in a way which is respectful and empowering. 
Our ongoing platform development is also rigorously based on recommendations from the community.    
Throughout the year, there has been continued community growth. 
We have had enthusiastic interest and collaboration from new autistic members, new developers, and people from within the Turing. 
We have also brought on new members to help support collaboration, progress, and provide mentorship. 
Ongoing collaboration has been encouraged through a combination of individual one to one sessions and group working. 
Substantial voluntary contributions have been made, and individual working relationships with a number of key autistic volunteers has been maintained. 
We are extremely grateful to our autistic collaborators.   
* Work on the branding and communications design of the platform is being done collaboratively using the unique skills of autistic individuals. 
The name “AutSPACEs” was chosen for the platform after consultation by community members. 
The acronym stands for our aim of invistigating Autistic Sensory Processing for Accessible Community Environments.     
* We are delighted to have received positive and often moving accounts from participants about their experience as members of the citizen science project. 
* Participation has resulted in significant results for many autistic collaborators. These include:  being supported through the challenges of COVID19 by being a part of the community.
   
#

## Did you have any challenges and how did you overcome them?	

#### COVID-19 disruptions   

* PI Kirstie Whitaker had only limited capacity to work on the project for much of 2020 due to urgent, covid-related work. 
Adaptations had to be made as a result of not being able to meet in person, creating challenges for co-working, focus groups, and discussion groups. 
Further, many autistic participants were impacted by anxiety due to the pandemic.      

* Nature of project   
A major goal of the project is to innovate new ways of conducting research so that it is open and participatory. 
This means that there is a constant process of designing, learning, and refining ways of working. 
We are committed to the integrity of the project through facilitating diverse autistic participation and creating opportunities which benefit them throughout the research cycle. 
We are also committed to open research and open working. 
These aspects can take additional time and make timelines harder to predict.    
All these difficulties relate to the time taken to develop the AutSPACEs platform. 
To overcome the above challenges, we intend to:  
* Bring in collaborators to specifically focus on platform development and community management, so that the project can broken up into more manageable areas. This is now being implemented.  
* Develop an effective onboarding process, documentation, repository, and online presence to support an open source community to easily contribute to the project. 
We will use The Turing Way findings and community to do this.
* Seek more involvement of the Whitaker Lab in mentoring researchers as well as additional training.  
* Extend the project research associate's contract for a further 8 months using funds from The Alan Turing Institute.    
* Seek funding for the expansion of the platform given its range of potential applications. 
This would be via. funding for better understanding co-occuring conditions, a key concern of autistic participants. 
Securing this funding would increase sustainability and the future impact of the project.    

**Has the original approved grant been spent?**	Yes

**Explain the difference between expenditure and budget grant** N/A	

**Final grant report?**	No

#
	  
## Engagement Activities

**Activity Title**	 “Autspaces: creating a participatory, open citizen science platform.” 

**Activity Type**	A talk or presentation or debate

**How many people?**	101 - 500

**Geographical Reach**	International

**Primary Audience**	Postgraduate students

**Other Audience**	Professional Practitioners,Public/other audiences,Study participants or study members,Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	Presentation given by researcher Georgia Aitkenhead and citizen scientist James Scott for the graduation of Open Life Sciences 2, to share resources and findings with peers, build community, and to demonstrate participiatory science in action. 

**Most important impact?**	Audience reported change in views, opinions or behaviours

**URL**	https://www.youtube.com/watch?v=wv8_0iOMpGs

**Publication ID**	60994d7ad82f39.87396136

#
 
**Activity Title**	 “Participatory science to improve autistic people’s lives”

**Activity Type**	A talk or presentation or debate

**How many people?**	101 - 500

**Geographical Reach**	International

**Primary Audience**	Postgraduate students

**Other Audience**	Professional Practitioners,Public/other audiences,Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	A talk for the Centre for Research and Interdisciplinarity presentinig the projct, sharing findings and methodologies, and encouraginig open and participatory science. 

The talk is openly available on Youtube and has 124 views.

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://zenodo.org/record/3766923

**Digital ID**	10.5281/zenodo.3766923

**Source**	Manual

**Publication ID**	609944c8c3a536.88080474

#
 
**Activity Title**	20-11-2019: "Participatory science to empower"

**Activity Type**	A talk or presentation or debate

**How many people?**	51 - 100

**Geographical Reach**	National

**Primary Audience**	Professional Practitioners

**Other Audience**	Industry/Business,Other audiences, Study participants or study members, Patients, carers and/or patient groups.

**Activity Years**	2019

**Lightening talk** presented by Georgia Aitkenhead for the Springer Nature SciData19 conference. 

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://zenodo.org/record/3530454#.Xoc_PxfTXx4
**Digital ID**	10.5281/zenodo.3530454
**Source**	Manual
**Publication ID**	609bd68fa5d188.05890575

#
 
**Activity Title**	27-03-2020 Wireframing workshop

**Activity Type**	Event, workshop or similar

**How many people?**	11 - 50

**Geographical Reach**	National

**Primary Audience**	Study participants or study members

**Other Audienc**e	Professional Practitioners,Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	A workshop that brought together autistic citizen scientists, developers from Fujitsu, researchers and professional practitioners in UX design in order to co-create wireframes for the platform. 

**Most important impact?**	Plans made for future related activity

**Publication ID**	609bda323f1535.57636252

#
 
**Activity Title**	30-01-2019: "Participatory science to empower"

**Activity Type**	A talk or presentation or debate

**How many people?**	11 - 50

**Geographical Reach**	International

**Primary Audience**	Other audiences

**Other Audience**	Postgraduate students, study participants or study members, patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	A presentation given to The Turing Institute's Data Science for Mental Health Special Interest Group to let people know about the Autistica/citizen science project and to share the project's values with fellow researchers.

**Most important impact?**	Audience reported change in views, opinions or behaviours

**URL**	https://zenodo.org/record/3743441#.XozAYxfTXxs

**Digital ID**	10.5281/zenodo.374344

**Source**	Manual

**Publication ID**	609bd7b21408d4.55378277

#
 
**Activity Title**	Autism Awareness Day co-authored blog 

**Activity Type**	Engagement focused website, blog or social media channel

**How many people?**	51 - 100

**Geographical Reach**	Local

**Primary Audience**	Other audiences

**Other Audience**	Professional Practitioners,Public/other audiences,Postgraduate students,Other audiences,Study participants or study members,Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	This was a co-authored blog by researcher Georgia Aitkenhead and autistic citizen scientist Otis Smith written for The Alan Turing Institute to promote the Autistica project and to raise awareness of autism more generally. 
It also gave a platform for Smith to speak directly about his own experiences and priorities. 

**Most important impact?**	Own/colleagues reported change in views or opinions.

**URL**	https://www.turing.ac.uk/blog/world-autism-awarene ss-day-celebration-and-citizen-science

**Publication ID**	609cf1a413a5e1.60373224

#
 
**Activity Title**	British Library Project Stall 

**Activity Type**	Event, workshop or similar

**How many people?**	51 - 100

**Geographical Reach**	Local

**Primary Audience**	Other audiences

**Other Audience**	Public/other audiences, Postgraduate students, Study participants or study members, Third sector organisations

**Activity Years**	2019

**Result Description**	A stall was run by a researcher and an autistic citizen scientist at The British Library for National Inclusion Week to raise awareness about the project and bring people into the community. 

**Most important impact?**	Requests about (further) participation or involvement

**Publication ID**	609bd1b64c4d02.72223046

#
 
**Activity Title**	Community co-working fortnightly sessions

**Activity Typ**e	Event, workshop or similar

**How many people?**	11 - 50

**Geographical Reach**	International

**Primary Audience**	Study participants or study members

**Other Audience**	Professional Practitioners,Public/other audiences,Other audiences,Patients, carers and/or patient groups

**Activity Years**	2021

**Result Description**	A series of online co-working and discussion session held on Zoom every fortnight. 
The sessions have been organised to support the empowered involvement of autiistic participants in the project, to onboard new members, to co-work on platform development, and to ensure we are meeting commuinty priorities and engaging more widely. 
Each fortnight the meetup sessions are iterated to make them more inclusive. 

**Most important impact?**	Decision made or influenced

**Publication ID**	609cefa5ca7717.59002339

#
 
**Activity Title**	Focus Group 

**Activity Type**	A formal working group, expert panel or dialogue

**How many people?**	11 - 50

**Geographical Reach**	Local

**Primary Audience**	Study participants or study members

**Other Audience**	Professional Practitioners, Industry/Business,Patients, carers and/or patient groups

**Activity Years**	2019

**Result Description**	Focus Group Session with diverse autistic participants to discuss the Autistica/Turing citizen science project along with researchers and the Fujitsu team. 

**Most important impact?**	Plans made for future related activity

**Publication ID**	609bd25c4931a2.56425829
 
#
 
**Activity Title**	Interactive Breakfast Session - Autistica Discover Conference 2019 

****Activity Type**	Event, workshop or similar

**How many people?**	1 - 10

**Geographical Reach**	National

**Primary Audience**	Patients, carers and/or patient groups

**Other Audience**	Professional Practitioners,Public/other audiences,Postgraduate students,Study participants or study members

**Activity Years**	2019

**Result Description**	This was an interactive session designed to demonstrate ways of getting involved in a citizen science project to a mixed audience. 
Event generated productive dialogue/feedback, expressions of interest in participation, and offers of collaboration. 

**Most important impact?**	Requests about (further) participation or involvement

**Publication ID**	5d15f975793c12.59278856

#

**Activity Title**	Moderation co-creation session

**Activity Type**	Event, workshop or similar

**How many people?**	11 - 50

**Geographical Reach**	National

**Primary Audience**	Study participants or study members

**Other Audience**	Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	This was a moderation co-creation session designed to deep dive into the nuances of moderation with an autistic community, and emerge with greater engagement, more underestanding, as well as some concrete actions to take forwards.

**Most important impact?**	Plans made for future related activity

**Publication ID**	609bdabd7678a2.07772135

#
 
**Activity Title**	Open Humans community call

**Activity Type**	A talk or presentation or debate

**How many people?**	51 - 100

**Geographical Reach**	International

**Primary Audience**	Supporters/charitable donors

**Other Audience**	Professional Practitioners,Postgraduate students,Study participants or study members,Patients, carers and/or patient groups

**Activity Years**	2020

**Result Description**	The project was presented by researcher Georgia Aitkenhead and summer intern Katharina Kloppenborg to the Open Humans community during an Open Humans community call. Through this call we disseminated findings and values among the Open Humans community, speecifically around user testing, and helped to foster connections. 

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://www.youtube.com/watch?v=YeVML0j8XoE

**Publication ID**	609949222030b1.61600884

#
 
**Activity Title**	Pint of Science

**Activity Type**	A formal working group, expert panel or dialogue

**How many people?**	11 - 50

**Geographical Reach**	Regional

**Primary Audience**	General public

**Other Audience**	Supporters,Study participants or study members,Patients, carers and/or patient groups,Third sector organisations

**Activity Years**	2019

**Result Description**	The project was presented in a panel discussion at the Turing’s Pint of Science event to showcase the potential of the project and routes to involvement to members of the general public, as well as encouraging dialogue around its central issues. The event generated valuable interest and discussion.

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://pintofscience.co.uk/event/empowering-autis tic-people-through-citizen-science

**Publication ID**	5d120ba84da142.33884253

#
 
**Activity Title**	Presentation on UN sustainability goals

**Activity Type**	A talk or presentation or debate

**How many people?**	11 - 50

**Geographical Reach**	Local

**Primary Audience**	Professional Practitioners

**Other Audience**	Public/other audiences, Other audiences, Study participants or study members

**Activity Years**	2019

**Result Description**	Springer Nature in association with the British Library hosted an event exploring how Open Research can support researchers with developing solutions to meet the UN’s SDGs (Sustainable Development Goals) and tackle today’s global challenges such as climate change, poverty and ensuring health and wellbeing. 
A paper delivered by PI Kirstie Whitaker which included the project's values in relation to UN SDGs. 

**Most important impact?**	Own/colleagues reported change in views or opinions.

**URL**	https://natureecoevocommunity.nature.com/posts/545 47-can-opening-up-research-help-drive-innovation

**Publication ID**	609bd3de672ff1.75887378
 
# 
 
**Activity Title**	Regular newsletters: monthly updates

**Activity Type**	A magazine or newsletter (print or online)

**How many people?**	51 - 100

**Geographical Reach**	International

**Primary Audience**	Study participants or study members

**Other Audience**	Professional Practitioners, Supporters, Other audiences, Patients, carers and/or patient groups

**Activity Years**	2019,2020,2021

**Result Description**	We have been sending out regular updates via. monthly newsletters to the project commnuity, starting on the 8th May 2019. 
So far 15 update emails have been sent. 
Of these, a number contain interviews with a diverse range of autistic and non-autistic project participants. 
These are carefully co-edited according to the wishes of the interviewee, so that they are a genuine representation of a diverse range of voices and types of expression. 

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://github.com/alan-turing-institute/Autistica CitizenScience/tree/master/project-communications/ newsletter

**Publication ID**	609cf2dc73ff24.33454926

#
 
**Activity Title**	Sainsbury Wellcome Centre Tea Hour

**Activity Type**	A talk or presentation or debate

**How many people?**	11 - 50

**Geographical Reach**	National

**Primary Audience**	Professional Practitioners

**Other Audience**	Professional Practitioners, Supporters,Patients, carers and/or patient groups

**Activity Years**	2019

**Result Description**	Kirstie Whitaker and autistic co-author Sarah Markham presented to the Sainsbury Wellcome centre to showcase novel models of research to an audience of biomedical researchers. 
It helped to build the community around the project and foster collaboration. 

**Most important impact?**	Audience reported change in views, opinions or behaviours

**URL**	https://www.academia.edu/38797709/Using_Citizen_Sc ience_to_Improve_Society_and_Empower_Autistic_Peop le

**Publication ID**	5d120a7e78ac70.72943107

#
 
**Activity Title**	“Growth through community”

**Activity Type**	A talk or presentation or debate

How many people?	1 - 10

**Geographical Reach**	Local

**Primary Audience**	Supporters/charitable donors

**Other Audience**	Study participants or study members, Patients, carers and/or patient groups, Third sector organisations

**Activity Years**	2020

**Result Description**	This was a talk to update funders for the AutSPACEs project, and to demonstrate the methods being used to gather community input. It was not meant to reach a large audience, but rather to show progress to stakeholders. The talk was succesful and favourably received. Talk presented by researcher Georgia Aitkenhead in collaboration with autistic citizen scientist Otis Smith. 

**Most important impact?**	Audience reported change in views, opinions or behaviours

**URL**	https://www.google.com/url?q=https://zenodo.org/re cord/3865057&sa=D&source=editors&ust=1620661131473 000&usg=AOvVaw2nEV2OcT8YJ57tzgWwAryw

**Digital ID**	10.5281/zenodo.3766923

**Source**	Manual

**Publication ID**	609945b9563159.77133266

#
 
**Activity Title**	“Participatory citizen science to improve autistic people’s lives”.

**Activity Type**	A talk or presentation or debate

**How many people?**	11 - 50

**Geographical Reach**	Local

**Primary Audience**	Professional Practitioners

**Other Audience** Postgraduate students

**Activity Years**	2020

**Result Description**	Presentation given by Kirstie Whitaker for the February Urban Analytics Meeting at The Alan Turing Institute.
Helped to form a better understanding of mutual research interests and possible connections. 

**Most important impact?**	Plans made for future related activity

**URL**	https://zenodo.org/record/3661469

**Digital ID**	10.5281/zenodo.3661469

**Source**	Manual

**Publication ID**	60994be5d90e40.19450428
 
#

**Activity Title**	“Participatory Citizen Science”

**Activity Type**	A talk or presentation or debate

**How many people?**	101 - 500

**Geographical Reach**	International

**Primary Audience**	Postgraduate students

**Other Audience**	Professional Practitioners, Public/other audiences, Other audiences, Study participants or study members, Patients, carers and/or patient groups

**Activity Years**	2021

**Result Description**	A talk delivered by Georgia Aitkenhead, Suzanne Iwai, Sarah Markham and Otis Smith for the third cohort of OLS, using AutSPACEs as a case study for participatory citizen science. 
This helped to upskill upcoming researchers in participatory and citizen science, thereby disseminating the project's values to an important community. 
It also gave a platform for diverse autistic participants to give their perspective on research and involvement. 

**Most important impact?**	Own/colleagues reported change in views or opinions.

**URL**	https://zenodo.org/record/4651431

**Digital ID**	10.5281/zenodo.4651431

**Source**	Manual

**Publication ID**	60994e481b43f5.43665636

#
 
**Activity Title**	“Participatory science to improve autistic people’s lives”

**Activity Type**	A talk or presentation or debate

**How many people?**	51 - 100

**Geographical Reach**	National

**Primary Audience**	Supporters/charitable donors

**Other Audience**	Industry/Business, Study participants or study members


**Activity Years**	2020

**Result Description**	Talk given internally to Fujitsu on working together to build a participatory, citizen science platform. 
Goal was to support Autistica to renew corporate charity partnership with Fujitsu as well as to share findings and values. 

**Most important impact?**	Decision made or influenced

**URL**	https://zenodo.org/record/3931533

**Digital ID**	10.5281/zenodo.3931533

**Source**	Manual

**Publication ID**	6099475180d2c8.90441059

#
 
**Activity Title**	“Research to empower: co-creating a citizen science platform"

**Activity Type**	A talk or presentation or debate

**How many people?**	101 - 500

**Geographical Reac**h	National

**Primary Audience**	Professional Practitioners

**Other Audience**	Policymakers/politicians, Public/other audiences, Supporters, Postgraduate students, Other audiences, Study participants or study members, Patients, carers and/or patient groups, Third sector organisations

**Activity Years**	2020

**Result Description**	Talk delivered for the Autistica Research Festival 2020 by Dr. Kirstie Whitaker, Georgia Aitkenhead, Craig Hall, Thomas Stanley, Chris Legg, Otis Smith and Lucinda Marsden. 
The goal was to disseminate findings and values of the project with a highly relevant audience, and to demonstrate participatory science in action. 

**Most important impact?**	Own/colleagues reported change in views or opinions.

**URL**	https://zenodo.org/record/3935849

**Digital ID**	10.5281/zenodo.3935849

**Source**	Manual

**Publication ID**	609948716cd5e6.49756984

#
 
**Activity Title**	“Research to Empower: co-creating a citizen science platform”

**Activity Type**	A talk or presentation or debate

**How many people?**	11 - 50

**Geographical Reach**	National

**Primary Audience**	Patients, carers and/or patient groups

**Other Audience**	Public/other audiences, Supporters, Study participants or study members, Third sector organisations

**Activity Years**	2020

**Result Description**	A presentation by researcher Georgia Aitkenhead and citizen scientist Otis Smith for an Autistica webinar on: “How can we move towards a more autism friendly world”. 
This was to share findings, demonstrate participatory science in action, encourage new collaborators to join, and support the project's funder Autistica. 

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://www.youtube.com/watch?v=QDWpykMPxQ8	
**Publication ID**	60994cb4c26006.15634675
 
# 
 
**Activity Title**	”Research to empower: co-creating a citizen science platform”

**Activity Type**	A formal working group, expert panel or dialogue

**How many people?**	101 - 500

**Geographical Reach**	International

**Primary Audience**	Professional Practitioners

**Other Audience**	Public/other audiences,Industry/Business,Postgraduate students,Other audiences,Study participants or study members,Patients, carers and/or patient groups,Third sector organisations

**Activity Years**	2020

**Result Description**	Presentation delivered by Georgia Aitkenhead as part of a panel discussion hosted by Kirstie Whitaker to introduce the Turing's new “Tools, Practices, and Systems” programme during CogX 2020. 
CogX is a global leadership summit and festival of AI and transformational technology addressing the question, “How do we get the next 10 years right?”. 

**Most important impact?**	Requests about (further) participation or involvement

**URL**	https://www.google.com/url?q=https://zenodo.org/re cord/3885494&sa=D&source=editors&ust=1620661346604 000&usg=AOvVaw1rjR8p-Pi1Hzw4S2LT6Q5x

**Digital ID**	10.5281/zenodo.3885494

**Source**	Manual

**Publication ID**	60994664bccfd1.67021693

 
v

00-project-documentation/communication/reports/academic-updates/annual-health-programme-update.md METASEP
# AutSPACEs: Investigating Sensory Processing for Accessible Community Environments: April 01 2020 – March 31 2021
*Annual update delivered to The Alan Turing Institute's Health Programme covering the period 01/04/2020-31/03/2021*

*PI: Kirstie Whitaker, Programme Lead for Tools, Practices, and Systems, The Alan Turing Institute. 
Funded by Autistica, 20 December 2018 to 1 May 2021, · https://www.turing.ac.uk/research/research-projects/citizen-science-platform-autistica. 
Continued funding by The Alan Turing Institute, 1 May 2021 - 31 December 2021
Notable/substantive activity/outcomes in research progress, April 01 2020 – March 31 2021*
 
## Platform Development

From April 2020 until mid-December 2020, work was ongoing with an agile development team provided by Fujitsu, Autistica’s corporate partner, who gave pro bono support. 
During this time:

* Various ways of working were iterated. 
Agile/Open Source research methods were designed and implemented. 
The protocols and theory were shared and explained to the team, and have been openly published on GitHub in the AutisticaCitizenScience repository.
* This phase of development gave the opportunity for important experimentation and learning.
* Accessibility research was undertaken by the Fujitsu team’s designer, whose work is openly published on the AutisticaCitizenScience repository. 
Much of this is relevant to ongoing designs and can be incorporated. 
This accessibility-focussed research uses axshare.
* 10 sprint reports were submitted by the Fujitsu agile team. 
They are published in the AutisticaCitizenScience repository. 
* 9 videos were released in order to showcase work done on the project by the agile development team. 
They are published in the AutisticaCitizenScience repository.
* 5 sessions of user testing were run with a diverse group of autistic users, including those with co-occurring conditions such as learning difficulties, dyslexia, and anxiety. 
These sessions were done with the support of doctoral student from CRI. 
They were adapted for individuals so those with complex needs could take part. 
The sessions were run virtually over Zoom, summarised, published on GitHub in note form, and used to iteratively modify the platform. 
They are available on the AutisticaCitizenScience repository.
* The repository was redesigned to make it more accessible. 
This was done through a card sort, file restructuring, and input from autistic individuals.

December 2020 saw the wrap up and handover of Fujitsu’s work.
This initiated a new phase of design and development.
During this time:

* A new AutSPACEs GitHub repository was set up under an open source license for the development of the platform. 
A README was created that includes development and project information, resources and a step-by-step guide to building the platform locally.
* A new set of wireframes were created and then iterated. 
First as a sketch, and then a more detailed version was created using Figma. 
To start development, an MVP or “simplified” version of that design was also created using Figma. 
This was then turned into a basic clickable html wireframe to demonstrate how interaction on the platform might function. 
* A requirements list for the platform was created by combining multiple sources of participatory input, including focus groups, the results of user testing, the results of one-to-one collaboration work, and online feedback. 
This is published online on the AutSPACEs repository.
* A series of issues reflecting the requirements were written on Asana and moved gradually over to GitHub. 
These issues are also available on Trello. 
All issues worked on will be publicly visible on the AutSPACEs GitHub repository.
* A new developer who provides pro bono support to further develop the platform was brought on board. 
He has so far contributed through a combination of independent working, upskilling others, and co-working with researchers.
* An infrastructure skeleton for the AutSPACEs platform has been built using the Django web development framework, and has been successfully integrated with the backend provided by Open Humans. 
This completes the first milestone of this phase of platform development.
* By April 01 2021, the second milestone is midway complete, with work still to be done on clarifying tasks in issues so they are suitable for an open source community of developers. 
A project board was set up to track overall progress. 
This is available in the AutSPACEs repository.
* Open Source components which are accessible to diverse users, user-tested, and well-documented for reuse, have been researched for potential use in the ongoing development of the platform.
* Accessibility checklists based on GOV.UK guidance have been created and built into issues so that platform releases meet these requirements.
* We have worked with autistic collaborators to redesign elements of the project management repository including the labelling of issues and milestones, to make them more suitable to autistic participants. 
This work is ongoing.
* An online focus group and co-creation session was run on the 30th November to understand issues and priorities concerning the platform moderation process. 
These discussions included a combination of autistic people, the parents of autistic people, and those who were in both categories. The session has now been fully transcribed (107 pages of human transcription). 
These will now be summarised, grouped, and shared with participants for their review and consent. 
They will then be openly published on GitHub in the AutisticaCitizenScience repository.
* Further interest and discussions were instigated as a result of the moderation session and engagement with researchers has continued. 
This has provided further insights and creates the possibility of even deeper community involvement and direction-setting in the moderation process.
* The “skeleton” code of conduct was created by combining the guidelines for the Autistica/Turing citizen science project using open source best practices, with the code of conduct developed by autistic people for the AutAngels autistic community.
This is now being openly worked on by researchers including autistic collaborators in an open Google Doc.
* Throughout the year, there has been continued community growth. We have had enthusiastic interest and collaboration from new autistic members, new developers, and people from within the Turing. 
Ongoing collaboration has been encouraged through a combination of individual one to one sessions and group working. 
Substantiary voluntary contributions have been made, and individual working relationships with a number of key autistic volunteers has been maintained. 
We are extremely grateful to our autistic collaborators.
* Work on the branding and communications design of the platform is being done collaboratively using the unique skills of autistic individuals. 
The name “AutSPACEs” was chosen for the platform after consultation by community members.
* We’re delighted to have received positive feedback from autistic participants about their experience as members of the citizen science project. 
Participation has resulted in significant results for many autistic collaborators.

## Outreach and collaboration
 
* The project was accepted into the second cohort of the Open Life Sciences leadership programme to be developed over the course of 3 months with the support of expert mentors and peers. 
Researcher Georgia Aitkenhead graduated from the programme on 17th December 2020. 
Outputs included an Open Canvas, a road map,  a detailed project people, skills, and resources map, structuring and initiating work on a chapter for The Turing Way, and valuable upskilling and networking with an open source community. 
A highly positive working relationship was formed with the OLS mentor, who is delivering ongoing mentorship to a project researcher.
* Contribution to The Hidden REF: The Hidden REF is a movement designed to publicly credit and support contributors to science who are often under-acknowledged. 
Based on learning gained from the participatory science, we proposed a new category of submissions for The Hidden REF called "lived experience". 
We hope it will help recognise the value participants bring to science through their personal expertise, gained through their daily lives.
* The project was submitted and accepted by the INCF to receive intern applicants for Google Summer of Code. 
An exercise was created as a GitHub issue to assess applicants’ ability to work on the platform and understand the complexity of the project. 
Two applicants completed our assessment. 
The next upcoming phase is applicant submissions. 
* Bi-weekly community meet-up and co-working sessions were set up. 
These involve collective discussion and group work among a diverse group of participants, including researchers, developers, and autistic citizen scientists. 
Additional outreach efforts and accommodations have been made for those with co-occurring conditions, such as autism and anxiety, autism and dyslexia, autism and learning difficulties and autism and dyspraxia. 
* Work is ongoing on a chapter for The Turing Way on Participatory Science, using AutSPACEs as a case study. 
The chapter is being co-written with a citiizen scientist and strategist giving pro bono support. 
* Findings and learning from the project have been shared with groups throughout The Alan Turing Institute. 
A participatory science co-working group was set up with researchers from Google DeepMind and learning from the project was shared with members. 
Project researcher Georgia Aitkenhead became a co-lead of the Social Data Sciences Special Interest Group and has presented this project with group members, as well as facilitating a collaborator from Open Humans to share knowledge with The Turing.

## Issues and Pull requests

From April 01 2020 - March 31 2021:

* 114 Pull Requests [PR]s were made to the AutisticaCitizenScience repository. 107 PRs were closed, of which 88 were merged.
* 291 issues were created in the AutisticaCitizenScience repository and 210 issues were closed.
* 29 PR were made to the AutSPACEs repository. 26 PR were closed, of which 17 were merged. 
(The high number of closed PRs is due to a number of individual PR for different pages of a wireframe, which were replaced by a single, combined PR)
* 92 issues created on the AutSPACEs repository and 44 issues were closed. 
 
## Status of progress against goals/milestones, any blockers to progress
 
Despite much effort, the project is behind schedule in delivering the platform according to the original projected delivery date. This is due to the following challenges: 
 
### COVID-19 disruptions
 
PI Kirstie Whitaker had only limited capacity to work on the project for much of 2020 due to urgent, covid-related work. 
Adaptations had to be made as a result of not being able to meet in person, creating challenges for co-working, focus groups, and discussion groups. 
Covid restrictions impacted on Autistica, the project’s funder, who had less capacity to offer their expert support to the project. 
Further, many autistic participants were impacted by anxiety, depression and other negative effects due to the pandemic. 
 
## Nature of project
 
A major goal of the project is to innovate new ways of conducting research so that it is open and participatory. 
This means that there is a constant process of designing, learning, and refining ways of working. 
We are committed to the integrity of the project through facilitating diverse autistic participation and creating opportunities which benefit them throughout the research cycle. 
We are also committed to open research and open working. 
These aspects can take additional time and make timelines harder to predict.
 
## Conference/workshop talks presented

* 27-04-2020: “Participatory science to improve autistic people’s lives”, Kirstie Whitaker gave a talk at the Centre for Research and Interdisciplinarity. 
Slides on Zenodo. 
* 30-04-2020: “Growth through community”, Georgia Aitkenhead and a citizen scientist delivered a demonstration and exploration of community-building in the Autistica citizen science project. 
Slides on Zenodo. 
* 09-06-2020: “”Research to empower: co-creating a citizen science platform”, delivered by Georgia Aitkenhead as part of a panel discussion hosted by Kirstie Whitaker for the “Tools, Practices, and Systems” of CogX 2020. 
Slides on Zenodo. 
Recording on Youtube.
* 06-07-2020: “Participatory science to improve autistic people’s lives”, delivered by Kirstie Whitaker. 
Talk given internally to Fujitsu on working together to build a participatory, citizen science platform.
Slides on Zenodo.
* 08-07-2020: “Research to empower: co-creating a citizen science platform", delivered for the Autistica Research Festival 2020 by Kirstie Whitaker, Georgia Aitkenhead, members of Fujitsu and citizen scientists. 
Slides on Zenodo. 
Presentation recording on Youtube. 
* 09-09-2020: The project was presented to the Open Humans community during a community call by Georgia Aitkenhead and a pro bono volunteer. 
Call recording on YouTube.
* 02-11-2020: “Participatory citizen science to improve autistic people’s lives”. 
Presentation given by Kirstie Whitaker for the February Urban Analytics Meeting at The Alan Turing Institute. 
Slides on Zenodo.
* 18-11-2020: “Research to Empower: co-creating a citizen science platform” was presented by Georgia Aitkenhead and a citizen scientist for an Autistica webinar on: “How can we move towards a more autism friendly world”. 
Recording available on Youtube. 
* 17-12-2020: “Autspaces: creating a participatory, open citizen science platform.” Presentation given by Georgia Aitkenhead and a citizen scientist for the graduation of OLS-2, 2020. 
Presentation on YouTube.
* 31-03-2021: “Participatory Citizen Science”, a talk delivered by Georgia Aitkenhead and three citizen scientists for the third cohort of OLS, using AutSPACEs as a case study for participatory citizen science. 
Slides on Zenodo. 
Recording on Youtube.
    
## Articles/blogs/press releases published (include link/s)

* Project newsletters have been released. 
Each one has included interviews with project collaborators. 
They are available on GitHub in the AutisticaCitizenScience repository. 
The newsletter has 73 subscribers.   
 
* Software/code/tools/methods developed/released
Methods, protocols, code, and other work as detailed above has been publicly released and is available under an open license on the AutisticaCitizenScience repository and the AutSPACEs repository. 
 
## External engagement, influence, impact (Academic/ industry/ government/ public/ international)

* Our participatory process involves engaging with, supporting, remunerating and in some cases upskilling autistic participants, for instance by teaching GitHub skills, giving a platform for views, and encouraging/supporting public speaking and writing. 
This is core to our methodology and values.
* A Twitter account was set up for the project: [@AutSpaces](https://twitter.com/AutSpaces). 
The Twitter account currently has 102 followers and has posted 48 tweets. 
Autistic participants have been actively involved in supporting the Twitter strategy and writing tweets.
* Collaboration with an artist from Scriberia has resulted in two cartoons which are used to illustrate and explain the project. 
* Instrumental support, mentorship, and code development was provided by colleagues and volunteers.
Their invaluable and generous contributions merit acknowledgement and celebration.

## Funding: Further funding, leveraged funding/support, in-kind contributions

* We obtained pro-bono support for substantial pieces of work from a PhD student at CRI in the form of volunteering hours to conduct user testing.
* We acquired funding to pay autistic contributors for their user testing time. 
* This was provided by corporate partner Fujitsu.
* Substantial support has been offered by a government strategist and autistic citizen scientist.
* Considerable pro bono coding and platform development support has been given by an embedded software engineer. 

[testimonials, any sensitive information or data, and names other than those of the key research team have been redacted so that this document can be open published]

00-project-documentation/communication/applications/fast-stream/lotty-objectives.md METASEP
# Lotty Coupat - Community Manager Objectives

Lotty is on secondment to the Alan Turing Institute over from the Civil Service for six months.
Below are the objestives for Lotty's posting as the Community Manager of the AutSPACEs project. 

## 1) Improving the trend of raised and closed issues that are integral to the running of the AutSPACEs project through connecting with key stakeholders to ensure the reviewing process is carried out. 

**Measure of success:**
- Increased numbers of opened issues over the secondment
- Increased numbers of closed issues over the secondment
- Increased numbers of different people credited as contributing to the work of closed issues

I will see that issues and pull requests are reviewed on time through ensuring good communication between contributors/action owners and reviewers. 
I will establish a way to manage and prioritise the issues and pull requests following the overall ambitions and strategic direction of the project and ensure all stakeholder agree and are aware of all updates.  

To do this I will ensure the wide range of stakeholder needs are considered when communicating through the creation and use of various materials. I will identify risks and solutions wherever possible to ensure a reduced number of issues being raised.

For this to be successful, I will have to be build key relationships and a network to ensure the communication between the contributor and review is successful in resolving issues and pull requests. 
I will create an inclusive environment where any individual can raise ideas and thoughts to wide range of contributors for consideration. 
The environment will also allow for continuous feedback mechanisms to ensure the management of the issues and pull requests reflect the strategic direction.  

The success of this objective will be through the increase ratio between the number of issues raised and number of issues closed. 
As, through this, it will show the success of the communication channels as well as management methodology. 

**Civil Service Behaviours:**
- Delivering at Pace 
- Managing a Quality Service
- Working Together

**Leadership Statement – Confident**

I will actively reach out to stakeholders and communicate my asks to ensure that we stay on track with our issues and pull requests for the project. 
I will work effectively work as a team to ensure we resolve issues and that the correct reviewers are involved.  

## 2) Increase participation to the project through establishing key pathways for participation on the AutSPACEs project to ensure the project moves forward in its strategic direction. 

**Measure of success:**
- Feedback during a focus group session with 5 new autistic contributors that they understand how they can contribute to the programme through information contained in the project’s GitHub repository. 
- Feedback during 1:1 30 minute interviews with 5 members of stakeholder organisations (Autistica, Open Humans, Alan Turing Institute) that the onboarding pathways accurately represent the project, its current progress and future goals.

I will create documents that will successfully onboard contributors to the project using a wide range of tools to ensure all accessibility and user requirements are covered. 
I will also improve the Github repository to ensure that all contributors, regardless of technical abilities, can collaborate on the repository as well as ensuring the correct training on using this platform. 
This will ensure I remove any technical barriers in place to enable successful contributions to the project. 
Regular review processes of these documents will be carried out with the users of them to ensure they are up to date and relevant. 

I will be receptive to all new ideas and work closely with participants to ensure ideas are developed and combined into the project. 
The success of this will ensure I create an inclusive and open environment. 

To keep the momentum of participation, I will provide opportunity for all new members to exceed their responsibilities where they feel comfortable to do so. 
To do this I will follow the mountain of engagement methodology to plan and create the channels to enable participants to increase their engagement with the project. 

The success of this objective will be seen through the increase of pull requests from all stakeholder groups of the project as this will show that contributors from all communities of the project are getting involved. 
It will also show the success of the training and documentation. 

**Civil Service Behaviours:**
- Communicating and Influencing 
- Working Together
- Leadership

**Leadership Statement – Empowering**

I will provide a space where contributors can strive to do their best in the project through helping them carry out their actions and provide them with opportunities to help them develop. I will create and inclusive environment to ensure all individuals feel safe to contribute. 

## 3) Integrate the communities that are associated with the AutSPACEs project to increase participation and widespread knowledge of the project

**Measure of success:**
- Increased number of subscribers to the AutSPACEs newsletter.
- Increased number of followers and engagements with the AutSPACEs twitter account.

I will increase the use of various platforms to reach out to the involved communities that are associated and a part of the AutSPACEs project. 
This includes the increase use of Twitter and more structured and regular Newsletter to increase engagement and participation in our project activities.  

I will find new ways to create communications and keep a log of these so that others can learn from my experience using different communications. 

I will listen to the views and ideas from all communities to feed into the organisation and management of activities that will bring the communities together. 
This includes what type of communication they need and how often to ensure adoption and engagement. 
To ensure this happens, I will create safe spaces for voices to be heard and ideas to be discussed and evaluated. 

To ensure that we are successfully integrating communities, and therefore success of this objective, a survey will be distributed to participants with key questions about the project and its communities at regular intervals throughout my posting. 
If the increase understanding of project, its associated communities and their roles in the project is evident, then this objective can be deemed successful. 

**Civil Service Behaviours:**
- Communicating and Influencing
- Working Together
- Leadership

**Leadership Statement – Inspiring**

I will show passion and pride for the project to create a positive and motivated environment to ensure we successfully work as a team to reach our shared vision. 
I will communicate the projects work with clarity, confidence and enthusiasm to influence contributors to have the drive to deliver the project.  

## 4) Internships provide the AutSPACEs project with key skills to ensure development of the platform. I will mentor, guide and manage their tasks and activity to ensure we work as a team to achieve the goals and milestones of the project.  

**Measures of success**
- Successful submission of internship project reports for both interns.
- Positive qualitative 360 review by collaborators across AutSPACEs including my activity manager and the interns themselves.

There are two interns working on the AutSPACEs project during my secondment. 
One a data science masters student and one an undergraduate student in computers science participating as a member of the Google Summer of Code. 
Under the supervision of my activity manager at the Turing Institute (Dr Kirstie Whitaker) I will manage and mentor the interns to successful completion of their projects. 

I will work collaboratively with each intern to understand their skills, activities and ambitions to then find the best opportunities for them in the project. 
I will identify where their skills lie and fit into the strategic direction of the project as this will be integral to the success of the project. 
I will need to understand areas of work beyond my responsibilities to ensure effective planning and action assigning. 
I will establish feedback mechanisms for my support so that I know how to improve my management.

I will bring the project team together through connecting members with others who have a shared interest in particular areas of the project using established communication channels to help achieve our shared objectives. 
This personal connection with people will motivate more individuals to participate in the project. 

Regular conversations and updates on actions with each intern will ensure that they are working towards the correct goals. 
Where necessary I will promote and defend their actions in larger conversations. 
This will also enable me to highlight and control any conflicting pressures they may face to ensure project progression.

The success of this objective will be seen through the success of their objectives and overall rating on their internships. 
Success will also be seen through feedback, whether it is positive or constructive and how, in reaction, I have changed to fit to the needs of the individuals. 

**Civil Service Behaviours:**
- Developing Self and Others
- Working Together
- Leadership

**Leadership Statement – Empowering**

I will provide the interns with the advice, tools and opportunities that they seek to be successful in their postings. 
I will create an inclusive and open environment where any issues or constraints can be freely discussed and resolved. 



00-project-documentation/communication/applications/fast-stream/README.md METASEP
# Civil Service Fast Stream

Here you will find documentation associated with contributors from the Fast Stream. 

The Fast Stream is a leadership programme run by the Civil Service. 
The Alan Turing Institute recieves Fast Streamers on secondment to carry out roles in various projects. 

So far those who have worked on the project are:

* Lotty Coupat - Community Manager - April 2021-September2021

00-project-documentation/communication/applications/cri-internship/SL-internship-final-report.md METASEP
# Internship Work Report - Building a Digital Prototype for the AutSPACEs platform
>  Special thanks to SP, KW, GA and all the members from the AutSPACEs meet-ups. Thanks for your generous supports during my internship! 

## Table of Contents
* <a href="#about-me">About Me</a>  
* <a href="#overview">Overview</a>
* <a href="#user-experience-research">User Experience Research</a>
* <a href="#design-system">Design System</a>
* <a href="#frontend-development">Frontend Development</a>
* <a href="#information-architecture">Information Architecture</a>
* <a href="#moderation">Moderation</a>
* <a href="#community">Community</a>
* <a href="#reflections">Reflections</a>
* <a href="#future-work">Future Work</a>
* <a href="#internship-defence-poster">Internship Defence Poster</a>


## About Me
Hi everyone. I am Soledad, a Digital Sciences master student at the Universié de Paris. I joined AutSPACEs as a frontend development intern in Oct. 2021 and will finish it by the end of Feb. 2022. 

## Overview
During my internship, I have been working in the design system, user research and frontend development of the AutSPACEs platform. Here is my [final progress of the platform](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/93649d15dd1d4b95885fc4ecae7868af8c011965/platform-designs/wireframes/platform-prototype-21-02-2022.md) 

## User Experience Research
With the instructions from SB, I managed to start the user research work and received feedback from the bi-weekly meet-ups to ensure that the platform features and information were really for end users. For the research, I have done the following work: 
1) analyzed the most needed features from the previous feedback & identified the most needed one and documented them on the [feedback summary slide](https://docs.google.com/presentation/u/2/d/1VTJbexcdFIkcNOYoW9C61iOVWgRw46ec08PSIv9flPs/edit#slide=id.gf192724d12_0_0)
2) created [user stories](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/platform-designs/design-research/Personas)
3) worked on the [user need matrices](https://docs.google.com/spreadsheets/d/11vbZ0TYvY2qq-EgF5IHNowC4Mfksf_fekJ5rUXY4deM/edit#gid=0) and user journeys 

[User Research Work Documentation](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/platform-designs/design-changes/requirements-log-20220221.md)

## Design System 
After SB identifying the color palette of the platform, I have done the followwing work:
1) mocked up low fidelity and high fidelity wireframes
2) iterated the design and collected feedback in the bi-weekly meet-ups
3) re-designed the platform so that the design was consistent 
4) created the design code documentation

[Design Sytem Work Documentation](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/93649d15dd1d4b95885fc4ecae7868af8c011965/platform-designs/design-changes/design-code-20220222.md)

## Information Architecture
1) created information architecture for the previous MVP 
2) identified the information flow per page
3) created a new information architecture diagram for the current platform

[Information Architecture Documentation](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/platform-designs/design-architecture)

## Moderation 
1) identified the moderation workflow
    * selecting new stories, moderating new stories, moderating edited stories, and moderating harmful reports
2) designed and iterated the moderation workflow based on the community's feedback 
3) simplified and identified key features for moderation workflow for MVP deployment  
4) documented the moderation decision process on the github repo 

[Moderation Workflow Documentation](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/Moderation/strategy-process-moderation)


## Frontend Development 
1) unified the boostrap and coded the wireframes out 
2) Refactored the frontend codes & set templates for navigation and footer 
3) Re-coded the following pages: Homepage, View Stories, Share Stories, My Stories, and Registration
4) Coded the following new pages: What Autism Is and About US

[Frontend Development Work](https://github.com/alan-turing-institute/AutSPACEs/tree/build-tmp)

## Community 
1) hosted bi-weekly meetings, shared monthly progress, and presented platform development work
2) updated information on social platforms: Twitter, TinyLetter, and Slack


## Reflections
I love how supportive the AutSPACEs community is and I have learned a lot from this project. Here are some main aspects where I acquired skills during my internship:
* Frontend Development: This is my first web development project and I was a little bit unsure about my skills in the first hand. With the supports and the freedom the team provided, I got to improve my skills in self-learning from [freecodeacademy](https://www.freecodecamp.org/learn/responsive-web-design/). Every time when I stumbled upon questions I could not solve on my own, I would use Slack for help. As JK said, we were not only building the project, but we were building ourselves as well. In the end, I felt quite happy to see how my skills could contribute to the platform.
* UX Research: I have never done user research before. With the guidance from SB, I have learned and experienced so much! I learned why it way a key to conduct a thorough user research before developing a product and the different design methods to conduct it. Through the valuable feedback from bi-weekly meet-ups, I got to iterate the design and practice the methods shared by SB. This UX learning provided me a new perspective in understanding the development of a project and I would keep it in mind for my future development journey. 
* Community: Honestly speaking, I was quite nervous in hosting the meet-ups in the first month. The meet-up memebers are really nice and supportive. Their friendlieness later dismissed my anxiety away. 🌻 With them, I learned how to conduct user researches, collect feedback for the platform, how to deliver presentations, and how to host meetings. 
* Project management: From this project, I see that it is not easy to run participatory projects as there would be lots of uncertainties in the road. From KW, GA, and SB, I learned from the best in how to support voluntary contributors, how to build flexibility in organizing tasks and how to maintain the projects with thorough documentation. This journey let me understand the project management in a new perspective and let me really appreciate each contribution in open source and participatory projects. 

## Future Work
I am waiting the review for my frontend development work and I will ensure that the codes will be properly programmed and do not have errors when being integrated. In future, I'd love to continue contributing on the frontend development part and co-work the development with other developers. I am also more than happy to share my experiences out and help other contributors for onboarding as well. : )

## Internship Defence Poster


00-project-documentation/communication/applications/cri-internship/README.md METASEP
Saved for work by Sowmya Rajan.

00-project-documentation/communication/applications/GSoC/KK-expression-of-interest.md METASEP
# GSoC 2021 Expression of Interest
## Kush Kothari (Web and Python developer | ML Enthusiast)
#### Email: kushkothari2001@gmail.com
#### GitHub profile: [kkothari2001](https://github.com/kkothari2001)
#### LinkedIn profile: [Kush Kothari](https://www.linkedin.com/in/kush-kothari-ba013218b/)


## Assessment Step 1.

Link to the deployed site: [ohuploaderkushk](https://ohuploaderkushk.herokuapp.com/)

Link to activity page on OpenHumans: [GSoC assessment for Kush Kothari](https://www.openhumans.org/activity/gsoc-assesment-for-kush-kothari/)

## Assessment Step 2.

### Django Projects:
- [To-Do App](https://github.com/kkothari2001/django-todo): App that can be used to maintain a list of tasks that can be dynamically added and deleted once completed. Deployment at: http://djangogetitdone.herokuapp.com/
  
- [URL Shortner](https://github.com/kkothari2001/django-url-shortner): A bitly clone that stores URLs in a database as a hash and redirects when the URL is clicked. Deployment at: https://djangourlshortner.herokuapp.com/

Please Note: While these projects show my Django skills, I believe they might not be the best way to show some of my other web development skills like web design. I urge you to go through the following links which are a showcase of some of the best projects I have made.

- [The SRA Website](https://sravjti.tech/): This is the website for the Society of Robotics and Automation, VJTI. I am a member of it and have made the entire site using HTML,Sass(CSS) and JavaScript. The code is curently private (because we are working on a backend authentication system right now). But if you wish, I can provide a bundled together zip archive of all the front end mockups in HTML,Sass and JS.

- [twAIn](https://github.com/kkothari2001/twAIn): As the punny name suggests, we created an AI in python that can write awesome stories after being trained on many modern classics! For this project I created the Web UI, and worked on the GPT-2 model that produces the stories. A demo video can be found at [this drive link](https://drive.google.com/drive/folders/157-9lOdn5lImO3KYgIIfoL04XEfkUpTj?usp=sharing)


## Assessment Step 3.

I'd like to contribute to the [Enter Experience Flow](https://github.com/GeorgiaHCA/AutSPACEs/blob/main/platform-design/requirements-list.md#enter-experiences-flow) page(s).

To access this page, I realise that the user will be logged into the site and the user data will be availabe through the [request.user.openhumansmember Object](https://django-open-humans.readthedocs.io/en/latest/modules/interactions.html#accessing-an-openhumansmember-object)

Starting with the basic functionality of the page(Backend implementation details):
- The input of the user is expected one of 5 different types
  - Free text (that will be later displayed on the "view other experiences" page as a single paragraph tag)
  - Structured Markdown (That can be converted first to HTML using the highly customizable library [Python-Markdown](https://pypi.org/project/Markdown/))
  - Recorded voice (Just like the Crisis Logger website mentioned in the list)
  - Recorded video using connected webcam.
  - Optional upload of image, sound and video files 
    - The site will allow the user to upload a file.
    - Resulting entire form will be authenticated in the backend via Django forms.
    - Thus the form will be considered valid only if the user uploaded the correct file type (.jpg, .png, .mp4, .mp3 ...etc.) to the form.
- Once the user scrolls down they will also get to select who has the data access permissions. This will be another field in the Model for UserExperience
- Details(Fields) of a Model of UserExperience will be
  - Primary Key (as generated by Django)
  - User (a relation to the Users database which will be instances of users as formed by the [OpenHumansMemberObject](https://django-open-humans.readthedocs.io/en/latest/modules/interactions.html#accessing-an-openhumansmember-object) from the [django-open-humans](https://django-open-humans.readthedocs.io/en/latest/index.html) library)
  - Type: A kind of an enum (enforced via validation rules) which will store the type of experience it is from the 5 mentioned above.
  - Content (to store the actual content or reference to a file)
  - Permissions: To store the kind of permissions the user has given for viewers and researchers.
  - Associated Tags: For filtering options when searching up other experiences.
  - Date: Date on which the experience was published
  - Time: So that we can show details like "published 20mins ago" on the view other experiences page.
  - Meta Data: Other possible meta data that could be associated with each post.

The form filling flow will be as follows:
- User is greeted with the appropriate title, text and the options:
  - Text
  - Image
  - Sound
  - Video
- Once the user clicks on these further suboptions will appear depending on the choice selected. The sub-options are mapped as:
  - Text
    - Simple text
    - Markdown
  - Image
    - Upload image
    - Take image from Webcam
  - Sound
    - Record sound using microphone
    - Upload a sound file
  - Video
    - Record video via webcam and microphone
    - Upload a video file
- The user gets to now change permissions and add comma-seperated tags for the experience
- There will be a checkbox for adult content (the form will automatically add the "adult content" tag to the tag list when submitting this to the backend.)
- A consent radio button
- On selecting "Submit" the user will either be redirected to a confirmation page (in case of no error in the form validation) or the same page but now with a red error popup (in case of a faliure in the backend).
- The confirmation page will now have easy navigation buttons just like its mentioned in the mockups on Figma. Options include:
  - Enter another Experience
  - Go to the My Experiences page
  - View other Experiences
  - Find out more about AutSPACEs

00-project-documentation/communication/applications/GSoC/GSoC-2021.md METASEP
# GSoC 2021 application summary

## Google Summer of Code (GSoC) 2021

-   Website: [https://summerofcode.withgoogle.com/](https://summerofcode.withgoogle.com/) and [https://google.github.io/gsocguides](https://google.github.io/gsocguides)     
-   Context: Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 10-week programming project during their break from school.
- [INCF call for the organisation partners](https://neurostars.org/t/incf-call-for-community-project-proposals-and-mentors-for-gsoc-2021-deadline-for-expressions-of-interest-january-15/17865), [supporting document with details](https://docs.google.com/document/d/1T7QCv5WDxqUt1FNHiAhbE74c7e7eutzFuv3wrqToVyo/edit)
- Submission Date: 15 January 2020

### Title

* AutSPACEs: a co-created citizen science platform 

### Tags
GitHub, Python, Django, UI/UX design, web development
### Project Description

AutSPACEs is a co-created, participatory, citizen-science platform which will be used to investigate how sensory processing differences affect the daily experiences of autistic people.
By collecting together diverse real-world experiences, contributed by autistic citizen scientists, we will build a dataset which can be used to make recommendations to improve autistic people's lives. 
The platform will also provide a safe and inclusive space to share stories, strategies, and build a community of contributors, which will be facilitated by a community-led, co-created moderation process and code of conduct.
Supported by extensive research, and the collaborative input of autistic people and their families, we are currently building up a working prototype.

Integral to the platform is a fine-grained consent model which allows users to specify who they would like their data to be shared with, and for what purposes. 
The platform will also grant each user dynamic control of their data. This is supported by integration with a backend infrastructure provided by [Open Humans](https://www.openhumans.org/). 
Open Humans is a foundation which enables research participants to have awareness and understanding of, as well as an agency over, their own data. 
Supporting data agency and transparent data management is critical to the platform's design. 

In summary, AutSPACEs enables rich, scalable, community-led research to be conducted in a way that is both transparent and encourages agency. 
Furthermore, as an openly licensed and publicly documented research tool, others can freely re-use, build on or adapt it to investigate other research questions. 

### Technical details

The platform is being built openly on GitHub. 
Data, documentation, details, and community recommendations, as well as supporting documents, protocols, and more, are all publicly available on our [project management repository](https://github.com/alan-turing-institute/AutisticaCitizenScience). 
The platform development takes place in a separate, linked repository: [AutSPACEs](https://github.com/GeorgiaHCA/AutSPACEsEvery) using the Python/Django web development framework.
Users will be able to share experiences through a website, which will then be deposited into a backend database supported by Open Humans.
All stages of the project are being conducted in collaboration with autistic people, and we are committed to being open and transparent throughout. 

### GSoC project plan

We are seeking a GSOC mentee with web development skills to work on building the platform with a researcher and an experienced developer. 
This will involve elements of UX/UI design focussing on the needs and preferences of autistic collaborators. 
We are able to offer a unique opportunity for a GSOC mentee to grow their technical proficiency and collaborative skills in the context of innovative, impact-focussed research. 
We will provide our mentee with a firm grounding in the emerging best practices of open source development and research. 
They will also be welcomed into the [The Turing Way](https://www.turing.ac.uk/research/research-projects/turing-way-handbook-reproducible-data-science) community. 
Depending on their preferences and interests, they will be invited to join the _The Turing Way_ community who are building an open source book to improve data science practices, to work with autistic collaborators on participatory design, and to help promote the platform to onboard new developers. 

### Expected outcome 

Over the course of the 10 week period, we expect the mentee to progress the prototype through web development and design and to work with autistic community members to implement search and moderation processes.  

### Required skills

* Basic version control using GitHub
* Python
* Test-driven development
* Skills or interests in UI/UX design
* Basic web development: ability to design and develop new web links and pages
* Clear, concise, and responsive communication and documentation
* Respect for, and the abiliity to work with, diverse collaborators.

### Optional skills

* Django
* Containers, docker
* Continuous integration
* Deployment and hosting
* Lived experience of autism

### Possible mentors

* Lead mentor: Georgia Aitkenhead (gaitkenhead@turing.ac.uk) 
* Co-mentor: James Kim (hyongsupkim@gmail.com) 

*No planned longer absences during the lead up/student interaction period (February 1 - April 19, especially the last week) or the project period (May 17 - August 30), however, it is possible based on the pandemic situation. 
We have proposed co-mentors so that at least one of us can be present to support the GSoC mentee at all time.*

00-project-documentation/communication/applications/GSoC/AR-project-proposal.md METASEP
# Building A Working Prototype of the AutSPACEs Website

## :phone:Contact Details:
Full Name - Anoushka Ramesh  
Email Address - anoushkaramesh21@gmail.com  
Location - Maharashtra, India  
Institution - Amrita Vishwa Vidyapeetham, Amritapuri  
Portfolio - [https://anoura12.github.io/](https://anoura12.github.io/)  
GitHub - [https://github.com/anoura12](https://github.com/anoura12)  
Hangouts ID - anoushkaramesh21@gmail.com  

## 📖Project Abstract:
The project aims to build and implement a working prototype of the AutSPACEs website in collaboration with the autistic community.  
  
AutSPACEs is a citizen science platform that captures an autistic person’s experiences with sensory processing differences and challenges and generates a qualitative dataset. This data serves two purposes:
1. Contribute to making the world more inclusive of autistic people by urging policy-makers to make changes based on evidence and recommendations from
a large number of lived experiences.
2. Educate non-autistic people on how they can be better allies for autistic individuals and destigmatize autism in our society.   


There are two milestones for the website previously defined by the web developers. They include several issues that focus on increasing the accessibility of the website and making it into a minimum viable product. **My approach is to solve issues from these milestones, test and review the pull requests, create documentation for the code and finally deliver the prototype to the autistic community for feedback.**

*The top priorities for this proposal are:*
* To build the prototype by solving issues from milestone 2 and milestone 3 on the
AutSPACEs repository where:  
  * Milestone 2 is creating a minimum viable product (MVP) of the platform
with required pages and features [[1]](https://github.com/alan-turing-institute/AutSPACEs/milestone/2)
  * Milestone 3 is increasing the accessibility of the platform [[2]](https://github.com/alan-turing-institute/AutSPACEs/milestone/3)
* Testing and improving the prototype based on feedback from the autistic
community.

## :mag:Project in Detail:
This is a basic overview of how the user will go through the website-
![website flow](https://user-images.githubusercontent.com/73518403/114704760-99e21680-9d44-11eb-9bda-18948fab0e2b.png)  


I would be progressing the prototype through milestones 2 and 3 by solving these four main issues as a starting point:

### Issue #[32](https://github.com/alan-turing-institute/AutSPACEs/issues/32) - MVP - Basic Accessibility
This issue is about establishing some basic accessibility to the website by ensuring that it meets the official WCAG (Web Content Accessibility Guidelines) guidelines.  
To implement this, a web accessibility tool called [aXe](https://www.deque.com/axe/) can be used. It’s a Chrome extension that easily detects accessibility issues on your website.  
![Untitled Diagram](https://user-images.githubusercontent.com/73518403/114705300-360c1d80-9d45-11eb-92f6-fc004872c354.png)  

*What needs to be done?*
* Check if it meets the Autism accessibility guidelines.
* Check if it meets the basic checklist which is:  

| Checklist Question | Possible Solution |
| ------------------ | ----------------- |
| Is the colour contrast of text readable by people with low vision? | *aXe shouldn’t detect any colour contrast issues* |
| Is the colour alone used to convey important information? | *View the page in grayscale to see whether the information is still conveyed correctly* |
| Do all images have alternative text? | *aXe would be able to detect issues related to alt text if any* |
| Does the alternative text make sense? | *See if the purpose of the image is met if all images are replaced with the alt text* |
| If the image is a link, does the alternative text clearly identify the link destination? | Replace the image with the alt text and see if it still makes sense* |
| Are all CSS background images either pure decoration or have alternative text? | *See if page is still informative if all images are removed* |
| Is any text embedded in images? | *See if there are any images used to present text* |
| Does the tab order make sense? | *Check if order is sequential and makes sense when tabbed through the page* |
| Can you always see where the keyboard focus is? | *Check if element in focus is properly highlighted* |
| Does the user have full access to the page using the keyboard alone? | *All functionality should be covered with the keyboard* |
| Do all form fields have proper labels? | *aXe should not find any ambiguity in labels* |
| Is all content and functionality available to a screen reader? | *See whether all content and features of the page is covered. Try using the screen reader with your eyes closed* |  

### Issue #[20](https://github.com/alan-turing-institute/AutSPACEs/issues/20) - Place-Holder Moderation Page
This issue involves creating a place-holder moderation page.

*What needs to be done?*
* Make sure the page is private to signed-in moderators.
* If an experience is submitted with ‘shared publicly’ permissions, it should be automatically displayed on the moderator page.
* Option to approve or deny publication.
* If approved, story needs to be displayed on the "view experiences" page.
* Changes to story status; pending, approved and published, blocked should be updated on the "my stories" page for relevant user.  

I will work closely with community members Susanna Fantoni and James Scott to make sure that this page is developed with the needs of the moderators in mind.  

### Issue #[73](https://github.com/alan-turing-institute/AutSPACEs/issues/73) - Create a glossary for the website
In order to make the platform more inclusive, it would help to include a glossary of technical terms, as well as a glossary of appropriate, inclusive language relating to autism and intersectional issues.  

*What needs to be done?*
* Either compile into glossary in markdown and add to appropriate place in the repository, or add glossary of terms to each page of the website.
* List words that are technical and which may be confusing to non-technical people throughout the repository and website.
* List exclusionary language and appropriate language.

I will work closely with community manager Lotty Coupat to make sure that this effort is harmonised across the project in the GitHub documentation and linked from the code of conduct and regular meetup welcome notes.

### Issue #[60](https://github.com/alan-turing-institute/AutSPACEs/issues/60) - Navigate using only a keyboard
The issue requires us to do some checks to see how easy it is for users to navigate the site using only a keyboard. The main keys used to navigate the screen are the ‘spacebar’, ‘Tab’, ‘Enter’ and ‘Esc’ keys. ‘Tab’ lets you jump between page elements.‘Enter’ and ‘Esc’ let you interact with and dismiss those page elements. The spacebar activates buttons, checkboxes and radio buttons.

What needs to be done?
* Check you can tell where you are on the page.
* Check you do not get stuck when navigating through content.
* Check forms are still usable without a mouse.
* Check users can skip to the main content on a page.
* Check the order makes sense when tabbing.
* Check nothing unexpected happens when tabbing through a page.  

## ✔️Project Deliverables:
* Connect the website to Open Humans - site responsible for the backend
database
* Solve issues from milestones 2 and 3 which are -
  * Issue #32 - MVP - Basic Accessibility [[3]](https://github.com/alan-turing-institute/AutSPACEs/issues/32)
  * Issue #20 - Place-holder moderation page [[4]](https://github.com/alan-turing-institute/AutSPACEs/issues/20)
  * Issue #73 - Create a glossary for the website [[5]](https://github.com/alan-turing-institute/AutSPACEs/issues/73)
  * Issue #60 - Navigating using only a keyboard [[6]](https://github.com/alan-turing-institute/AutSPACEs/issues/60)
* Review PRs and test them in the website to see if they meet the desired
outcomes
* Add documentation to the code
* Test the prototype in collaboration with the autistic community
* Raise new issues based on the feedback from the community

## :clock10:Project Timeline:  

| Week | Tasks |
| --- | --- |
| Community Bonding (May 17 - June 7) | <ul><li>Get to know the AutSPACEs community and introduce myself there.</li><li>Meet the core development team to ensure that everyone is working towards the same goal.</li><li>Explore Open Humans to get an understanding on the backend database in order to integrate it to the frontend.</li></ul> | 
| **(June 7-August 16)** | <div align="center">**Coding Begins**</div> |
| Week 1 (June 7- June 13) | <ul><li>Build the existing prototype locally.</li><li>Understand existing features and elements of the website.</li></ul> |
| Week 2 (June 14-June 20) | <ul><li>Solve issue #32.</li><li>Review issues in milestone 2.</li></ul> |
| Week 3 (June 21-June 27) | <ul><li>Test the PRs on the website to check if it meets desired outcomes.</li><li>Add required documentation for said PR once merged.</li><li>College exams week so work here may be shared earlier or later as needed.</li></ul> |
| Week 4 (June 28-July 4) | <ul><li>Start solving issue #20.</li><li>Discuss the UI and working of the moderation page with community members.</li></ul> |
| Week 5 (July 5-July 11) | <ul><li>Work on Phase I report.</li><li>Buffer of 4 days to compensate for any work that I may have missed out.</li></ul> |
| **(July 12-July 16)** | <div align="center">**Phase I Evaluation**</div> |
| Week 6 (July 17-July 23) | <ul><li>Work on issues in milestone 3 by starting with issue #60.</li><li>Review PRs in milestone 3.</li></ul> |
| Week 7 (July 24-July 30) | <ul><li>Work on issue #73.</li><li>Buffer of 1-2 days to complete any remaining components of the prototype and make it ready to present to other people.</li></ul> |
| Week 8 (July 31-August 6) | <ul><li>Present the working prototype to the community to test it.</li><li>Write any issues after community feedback.</li></ul> |
| Week 9 (August 7-August 13) | <ul><li>Close out any open pull requests.</li><li>Review my entire work before writing a report.</li><li>Work on the most serious issues reported from the community.</li></ul> |
| Final Submission Period (August 14-August 23) | <ul><li>Continue working on any major issues as stated previously.</li><li>Work on the final report.</li><li>Buffer of 3 days to complete any remaining work.</li><li>Write about future contributions and how we can develop the platform further to better capture an autistic user’s experiences.</li></ul> |
| **(August 16-August 23)** | <div align="center">**Final Submission**</div> |  

**Stretch Goals:**  
I would be solving the following issues if time permits:  
1. Issue #71 - Add Autistica and Turing logos
2. Issue #69 - Brief explanation of explore stories page
3. Issue #47 - Check if images have proper descriptions  

## 🗣️Plan for communication with mentors:
I would be giving regular status updates on Slack everyday updating my mentors about my work and progress. I will also attend weekly calls on Zoom with Lotty (community manager) and Kirstie (project lead), and regular calls with James Kim (lead developer) as needed. I will attend the fortnightly community meet-ups to build connections to the autistic contributors.  

## :star2:About Me
* **Why do you want to do this project?**  
This project combines my interest in design with a sense of purpose towards the community. I’ve always liked to draw and design and I do have good skills in web
development. This particular project gives me a good opportunity to create an accessible design specifically for autistic people which not only puts my skills to
the test but also gives me a sense of fulfillment.  
I have a friend with autism and have met some other autistic people in the past. I understand how small changes in their environment can trigger them and
frustrate them significantly. Hence, I realise that AutSPACEs can potentially improve the lives of so many autistic people and this project gives me a chance
to do just that.  

* **Projects I’ve worked on in the past**  
  * I have built my own Open Humans page which can successfully upload
user data. [[7]](http://3.142.144.255:8000/todo/)
  * To-Do App - This is a to-do application built with Django - the same
framework on which AutSPACEs is built.[[8]](https://github.com/anoura12/todo-app)

* **Is this the only project I’m working on?**  
Yes, this is the only project and INCF is the only organisation I’d be applying to. I have engaged with the project team through the Open Humans slack workspace
and lead mentor Kirstie Whitaker has provided 1:1 support in the development of this application.  

* **Working time and commitments**  
I would be utilising time after college to get this work done. On an average, I would be spending around 40-45 hours per week.  

* **Other plans for the summer**  
I would be having my end semester examinations from June 24 th . They will last for about a week and a half but I will be able to cover up any pending work during
the breaks I get between the exams or on the weekends. I will also put in extra work before and after my exams to make up for any backlogs.

* **Past experience**  
I am a university freshman currently pursuing a degree in Computer Science and Engineering. I am experienced with HTML, CSS, Python, Django and React. I am
also familiar with Git. I have made my own blog backend using Django.  
Currently, I am a part of a student-run open source club called amFOSS [[9]](https://amfoss.in/) where we contribute to open source software and learn a variety of technical and
non-technical skills.  
For further information, please feel free to get in touch via any of the means given in this proposal, or refer to my CV [[10]](https://anoura12.github.io/docs/Anoushka_Resume.pdf).  

## 📑Appendix:
[1] [https://github.com/alan-turing-institute/AutSPACEs/milestone/2](https://github.com/alan-turing-institute/AutSPACEs/milestone/2)  
[2] [https://github.com/alan-turing-institute/AutSPACEs/milestone/3](https://github.com/alan-turing-institute/AutSPACEs/milestone/3)  
[3] [https://github.com/alan-turing-institute/AutSPACEs/issues/32](https://github.com/alan-turing-institute/AutSPACEs/issues/32)  
[4] [https://github.com/alan-turing-institute/AutSPACEs/issues/73](https://github.com/alan-turing-institute/AutSPACEs/issues/20)  
[5] [https://github.com/alan-turing-institute/AutSPACEs/issues/20](https://github.com/alan-turing-institute/AutSPACEs/issues/73)  
[6] [https://github.com/alan-turing-institute/AutSPACEs/issues/60](https://github.com/alan-turing-institute/AutSPACEs/issues/60)  
[7] [https://gsocautspaces.herokuapp.com/](https://gsocautspaces.herokuapp.com/)  
[8] Link to repository - [https://github.com/anoura12/todo-app](https://github.com/anoura12/todo-app)  
    Link to app - [http://3.142.144.255:8000/todo/](http://3.142.144.255:8000/todo/)  
[9] [https://amfoss.in/](https://amfoss.in/)  
[10] [https://anoura12.github.io/docs/Anoushka_Resume.pdf](https://anoura12.github.io/docs/Anoushka_Resume.pdf) 

tests/test_apps/test_main/test_views/test_index_view.py METASEP
from django.test import Client
from django.urls import reverse


def test_main_page(client: Client, main_heading: str) -> None:
    """This test ensures that main page works."""
    response = client.get('/')

    assert response.status_code == 200
    assert main_heading in str(response.content)


def test_hello_page(client: Client, main_heading: str) -> None:
    """This test ensures that hello page works."""
    response = client.get(reverse('main:hello'))

    assert response.status_code == 200
    assert main_heading in str(response.content)

tests/test_apps/test_main/test_models/test_blog_post_model.py METASEP
from hypothesis import given
from hypothesis.extra import django

from server.apps.main.models import BlogPost


class TestBlogPost(django.TestCase):
    """This is a property-based test that ensures model correctness."""

    @given(django.from_model(BlogPost))
    def test_model_properties(self, instance: BlogPost) -> None:
        """Tests that instance can be saved and has correct representation."""
        instance.save()

        assert instance.id > 0
        assert len(str(instance)) <= 20

docs/pages/template/upgrading-template.rst METASEP
Upgrading template
==================

Upgrading your project to be up-to-date with this template is a primary goal.
This is achieved by manually applying ``diff`` to your existing code.

``diff`` can be viewed from the project's ``README.md``.
See `an example <https://github.com/wemake-services/wemake-django-template/compare/91188fc4b89bd4989a0ead3d156a4619644965b0...master>`_.

When the upgrade is applied just change the commit hash in your template
to the most recent one.


Versions
--------

Sometimes, when we break something heavily, we create a version.
That's is required for our users, so they can use old releases to create
projects as they used to be a long time ago.

However, we do not officially support older versions.
And we do not recommend to use them.

A full list of versions can be `found here <https://github.com/wemake-services/wemake-django-template/releases>`_.


Migration guides
----------------

Each time we create a new version, we also provide a migration guide.
What is a migration guide?
It is something you have to do to your project
other than just copy-pasting diffs from new versions.

Goodbye, pipenv!
~~~~~~~~~~~~~~~~

This version requires a manual migration step.

1. You need to install ``poetry``
2. You need to create a new ``pyproject.toml`` file with ``poetry init``
3. You need to adjust name, version, description, and authors meta fields
4. You need to copy-paste dependencies from ``Pipfile`` to ``pyproject.toml``
5. You need to set correct version for each dependency in the list,
   use ``"^x.y"`` `notation <https://python-poetry.org/docs/dependency-specification/#caret-requirements>`_
6. You need to adjust ``[build-system]`` tag and ``POETRY_VERSION`` variable
   to fit your ``poetry`` version
7. Create ``poetry.lock`` file with ``poetry lock``

It should be fine! You may, however, experience some bugs related to different
dependency version resolution mechanisms. But, ``poetry`` does it better.

docs/pages/template/troubleshooting.rst METASEP
Troubleshooting
===============

This section is about some of the problems you may encounter and
how to solve these problems.


Docker
------

Pillow
~~~~~~

If you want to install ``Pillow`` that you should
add this to dockerfile and rebuild image:

- ``RUN apk add jpeg-dev zlib-dev``
- ``LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "poetry install ..."``

See `<https://github.com/python-pillow/Pillow/issues/1763>`_

Root owns build artifacts
~~~~~~~~~~~~~~~~~~~~~~~~~

This happens on some systems.
It happens because build happens in ``docker`` as the ``root`` user.
The fix is to pass current ``UID`` to ``docker``.
See `<https://github.com/wemake-services/wemake-django-template/issues/345>`_.

MacOS performance
~~~~~~~~~~~~~~~~~

If you use the MacOS you
know that you have problems with disk performance.
Starting and restarting an application is slower than with Linux
(it's very noticeable for project with large codebase).
For particular solve this problem add ``:delegated`` to each
your volumes in ``docker-compose.yml`` file.

.. code:: yaml

  volumes:
    - pgdata:/var/lib/postgresql/data:delegated

For more information, you can look at the
`docker documents <https://docs.docker.com/docker-for-mac/osxfs-caching/>`_
and a good `article <https://medium.com/@TomKeur/how-get-better-disk-performance-in-docker-for-mac-2ba1244b5b70>`_.

Open Humans Mismatch Redirect URI
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The URL that you've defined under `Redirect URL` when creating your Oauth2 Open Humans project is incorrect. If you've followed the `dev_readme.md`, it should be something like `http://localhost:8000/openhumans/complete`.

Django Problems
~~~~~~~~~~~~~~~

NoReverseMatch Errors
---------------------
Django is saying that it cannot find a matching URL pattern for the URL you've provided in any of your installed app's urls. (i.e. urls.py, views.py, etc.) See (here)[https://stackoverflow.com/questions/38390177/what-is-a-noreversematch-error-and-how-do-i-fix-it] for more information.

Styling is All Wrong!
---------------------
This is because the CSP settings within the project are quite strict. The css, scripts, and other static assets used to make the website look pretty isn't allowed for security reasons. You can see these errors when opening up the `Inspector` (Right Click -> Inspect Element) and viewing the Console tab within your browser of choice. See the following for more information.
(Django CSP)[https://django-csp.readthedocs.io/en/latest/configuration.htm://django-csp.readthedocs.io/en/latest/configuration.html]
(Unsafe-Inline)[https://content-security-policy.com/unsafe-inline/]
(Managing Static Files)[https://docs.djangoproject.com/en/2.2/howto/static-files/]


docs/pages/template/testing.rst METASEP
Testing
=======

We try to keep our quality standards high.
So, we use different tools to make this possible.

We use `mypy <http://mypy-lang.org/>`_ for optional
static typing.
We run tests with `pytest <https://pytest.org/>`_ framework.


pytest
------

``pytest`` is the main tool for test discovery, collection, and execution.
It is configured inside ``setup.cfg`` file.

We use a lot of ``pytest`` plugins that enhance our development experience.
List of these plugins is available inside ``pyproject.toml`` file.

Running:

.. code:: bash

  pytest

We also have some options that are set on each run via ``--addopts``
inside the ``setup.cfg`` file.

Plugins
~~~~~~~

We use different ``pytest`` plugins to make our testing process better.
Here's the full list of things we use:

- `pytest-django`_ - plugin that introduce a lot of ``django`` specific
  helpers, fixtures, and configuration
- `django-test-migrations`_ - plugin to test Django migrations and their order
- `pytest-cov`_ - plugin to measure test coverage
- `pytest-randomly`_ - plugin to execute tests in random order and
  also set predictable random seed, so you can easily debug
  what went wrong for tests that rely on random behavior
- `pytest-deadfixtures`_ - plugin to find unused or duplicate fixtures
- `pytest-timeout`_ - plugin to raise errors for tests
  that take too long to finish, this way you can control test execution speed
- `pytest-testmon`_ - plugin for `Test Driven Development`_ which executes
  tests that are affected by your code changes

.. _pytest-django: https://github.com/pytest-dev/pytest-django
.. _django-test-migrations: https://github.com/wemake-services/django-test-migrations
.. _pytest-cov: https://github.com/pytest-dev/pytest-cov
.. _pytest-randomly: https://github.com/pytest-dev/pytest-randomly
.. _pytest-deadfixtures: https://github.com/jllorencetti/pytest-deadfixtures
.. _pytest-timeout: https://pypi.org/project/pytest-timeout
.. _pytest-testmon: https://github.com/tarpas/pytest-testmon
.. _`Test Driven Development`: https://en.wikipedia.org/wiki/Test-driven_development

Tweaking tests performance
~~~~~~~~~~~~~~~~~~~~~~~~~~

There are several options you can provide or remove to make your tests faster:

- You can use ``pytest-xdist`` together with
  ``-n auto``  to schedule several numbers of workers,
  sometimes when there are a lot of tests it may increase the testing speed.
  But on a small project with a small amount of test it just
  gives you an overhead, so removing it (together with `--boxed`)
  will boost your testing performance
- If there are a lot of tests with database access
  it may be wise to add
  `--reuse-db option <https://pytest-django.readthedocs.io/en/latest/database.html#example-work-flow-with-reuse-db-and-create-db>`_,
  so ``django`` won't recreate database on each test
- If there are a lot of migrations to perform you may also add
  `--nomigrations option <https://pytest-django.readthedocs.io/en/latest/database.html#nomigrations-disable-django-1-7-migrations>`_,
  so ``django`` won't run all the migrations
  and instead will inspect and create models directly
- Removing ``coverage``. Sometimes that an option.
  When running tests in TDD style why would you need such a feature?
  So, coverage will be calculated when you will ask for it.
  That's a huge speed up
- Removing linters. Sometimes you may want to split linting and testing phases.
  This might be useful when you have a lot of tests, and you want to run
  linters before, so it won't fail your complex testing pyramid with a simple
  whitespace violation


mypy
----

Running ``mypy`` is required before any commit:

.. code:: bash

  mypy server tests/**/*.py

This will eliminate a lot of possible ``TypeError`` and other issues
in both `server/` and `tests/` directories.
We use `tests/**/*.py` because `tests/` is not a python package,
so it is not importable.

However, this will not make code 100% safe from errors.
So, both the testing and review process are still required.

``mypy`` is configured via ``setup.cfg``.
Read the `docs <https://mypy.readthedocs.io/en/latest/>`_
for more information.

We also use `django-stubs <https://github.com/typeddjango/django-stubs>`_
to type ``django`` internals.
This package is optional and can be removed,
if you don't want to type your ``django`` for some reason.

docs/pages/template/security.rst METASEP
Security
========

Security is our first priority.
We try to make projects as secure as possible.
We use a lot of 3rd party tools to achieve that.


Django
------

Django has a lot of `security-specific settings <https://docs.djangoproject.com/en/2.2/topics/security/>`_
that are all turned on by default in this template.

We also :ref:`enforce <going-to-production>` all the best practices
by running ``django`` checks inside CI for each commit.

We also use a set of custom ``django`` apps
to enforce even more security rules:

- `django-axes <https://github.com/jazzband/django-axes>`_ to track and ban repeating access requests
- `django-csp <https://github.com/mozilla/django-csp>`_ to enforce `Content-Security Policy <https://www.w3.org/TR/CSP/>`_ for our webpages
- `django-http-referrer-policy <https://django-referrer-policy.readthedocs.io>`_ to enforce `Referrer Policy <https://www.w3.org/TR/referrer-policy/>`_ for our webpages

And there are also some awesome extensions that are not included:

- `django-honeypot <https://github.com/jamesturk/django-honeypot>`_ - django application that provides utilities for preventing automated form spam

Passwords
~~~~~~~~~

We use strong algorithms for password hashing:
``bcrypt``, ``PBKDF2`` and ``Argon2`` which are known to be secure enough.


Dependencies
------------

We use `poetry <https://poetry.eustace.io/>`_ which ensures
that all the dependencies hashes match during the installation process.
Otherwise, the build will fail.
So, it is almost impossible to replace an already existing package
with a malicious one.

We also use `safety <https://github.com/pyupio/safety>`_
to analyze vulnerable dependencies to prevent the build
to go to the production with known unsafe dependencies.

.. code:: bash

  safety check

We also use `Github security alerts <https://help.github.com/articles/about-security-alerts-for-vulnerable-dependencies/>`_
for our main template repository.


Static analysis
---------------

We use ``wemake-python-styleguide`` which
includes `bandit <https://pypi.org/project/bandit/>`_ security checks inside.

You can also install `pyt <https://pyt.readthedocs.io>`_
which is not included by default.
It will include even more static checks for
``sql`` injections, ``xss`` and others.


Dynamic analysis
----------------

You can monitor your running application to detect anomalous activities.
Tools to consider:

- `dagda <https://github.com/eliasgranderubio/dagda>`_ - a tool to perform static analysis of known vulnerabilities, trojans, viruses, malware & other malicious threats in docker images/containers and to monitor the docker daemon and running docker containers for detecting anomalous activities

All the tools above are not included into this template.
You have to install them by yourself.


Secrets
-------

We store secrets separately from code. So, it is harder for them to leak.
However, we encourage to use tools like
`truffleHog <https://github.com/dxa4481/truffleHog>`_ or `detect-secrets <https://github.com/Yelp/detect-secrets>`_ inside your workflow.

You can also turn on `Gitlab secrets checker <https://docs.gitlab.com/ee/push_rules/push_rules.html#prevent-pushing-secrets-to-the-repository>`_ which we highly recommend.


Audits
------

The only way to be sure that your app is secure
is to constantly audit it in production.

There are different tools to help you:

- `twa <https://github.com/trailofbits/twa>`_ - tiny web auditor that has a lot of security checks for the webpages
- `XSStrike <https://github.com/s0md3v/XSStrike>`_ - automated tool to check that your application is not vulnerable to ``xss`` errors
- `docker-bench <https://github.com/docker/docker-bench-security>`_ - a script that checks for dozens of common best-practices around deploying Docker containers in production
- `lynis <https://cisofy.com/lynis/>`_ - a battle-tested security tool for systems running Linux, macOS, or Unix-based operating system
- `trivy <https://github.com/knqyf263/trivy>`_ - a simple and comprehensive vulnerability scanner for containers

But, even after all you attempts to secure your application,
it **won't be 100% safe**. Do not fall into this false feeling of security.


Further reading
---------------

- `Open Web Application Security Project <https://www.owasp.org/images/3/33/OWASP_Application_Security_Verification_Standard_3.0.1.pdf>`_
- `Docker security <https://docs.docker.com/engine/security/security/>`_
- `AppArmor <https://docs.docker.com/engine/security/apparmor/>`_ and `bane <https://github.com/genuinetools/bane>`_

docs/pages/template/production.rst METASEP
Production
==========

We use different tools and setup for production.
We do not fully provide this part with the template. Why?

1. It requires a lot of server configuration
2. It heavily depends on your needs: performance, price, technology, etc
3. It is possible to show some vulnerable parts to possible attackers

So, you will need to deploy your application by yourself.
Here, we would like to cover some basic things that are not changed
from deployment strategy.

The easiest deployment strategy for small apps is ``docker-compose`` and
``systemd`` inside a host operating system.


Production configuration
------------------------

You will need to specify extra configuration
to run ``docker-compose`` in production.
Since production build also uses ``caddy``,
which is not required into the development build.

.. code:: bash

  docker-compose -f docker-compose.yml -f docker/docker-compose.prod.yml config > docker-compose.deploy.yml


Pulling pre-built images
------------------------

You will need to pull pre-built images from ``Gitlab`` to run them.
How to do that?

The first step is to create a personal access token for this service.
Then, login into your registry with:

.. code:: bash

   docker login registry.gitlab.your.domain

And now you are ready to pull your images:

.. code:: bash

   docker pull your-image:latest

See `official Gitlab docs <https://docs.gitlab.com/ee/user/project/container_registry.html>`_.


Updating already running service
--------------------------------

If you need to update an already running service,
them you will have to use ``docker service update``
or ``docker stack deploy``.

Updating existing `service <https://docs.docker.com/engine/reference/commandline/service_update/>`_.
Updating existing `stack <https://docs.docker.com/engine/reference/commandline/stack_deploy/>`_.

Zero-Time Updates
~~~~~~~~~~~~~~~~~

Zero-Time Updates can be tricky.
You need to create containers with the new code, update existing services,
wait for the working sessions to be completed, and to shut down old
containers.


Further reading
---------------

- Production with `docker-compose <https://docs.docker.com/compose/production>`_
- `Full tutorial <https://docs.docker.com/get-started>`_

docs/pages/template/production-checklist.rst METASEP
.. _`going-to-production`:

Going to production
===================

This section covers everything you need to know before going to production.


Django
------

Checks
~~~~~~

Before going to production make sure you have checked everything:

1. Migrations are up-to-date
2. Static files are all present
3. There are no security or other ``django`` warnings

Checking migrations, static files,
and security is done inside ``ci.sh`` script.

We check that there are no unapplied migrations:

.. code :: bash

  python manage.py makemigrations --dry-run --check

If you have forgotten to create a migration and changed the model,
you will see an error on this line.

We also check that static files can be collected:

.. code :: bash

   DJANGO_ENV=production python manage.py collectstatic --no-input --dry-run

However, this check does not cover all the cases.
Sometimes ``ManifestStaticFilesStorage`` will fail on real cases,
but will pass with ``--dry-run`` option.
You can disable ``--dry-run`` option if you know what you are doing.
Be careful with this option, when working with auto-uploading
your static files to any kind of CDNs.

That's how we check ``django`` warnings:

.. code:: bash

  DJANGO_ENV=production python manage.py check --deploy --fail-level WARNING

These warnings are raised by ``django``
when it detects any configuration issues.

This command should give not warnings or errors.
It is bundled into `docker`, so the container will not work with any warnings.

Static and media files
~~~~~~~~~~~~~~~~~~~~~~

We use ``/var/www/django`` folder to store our media
and static files in production as ``/var/www/django/static``
and ``/var/www/django/media``.
Docker uses these two folders as named volumes.
And later these volumes are also mounted to ``caddy``
with ``ro`` mode so it possible to read their contents.

To find the exact location of these files on your host
you will need to do the following:

.. code:: bash

  docker volume ls  # to find volumes' names
  docker volume inspect VOLUME_NAME

Sometimes storing your media files inside a container is not a good idea.
Use ``CDN`` when you have a lot of user content
or it is very important not to lose it.
There are `helper libraries <http://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html>`_
to bind ``django`` and these services.

If you don't need ``media`` files support, just remove the volumes.

Migrations
~~~~~~~~~~

We do run migration in the ``gunicorn.sh`` by default.
Why do we do this? Because that's probably the easiest way to do it.
But it clearly has some disadvantages:

- When scaling your container for multiple nodes you will have multiple
  threads running the same migrations. And it might be a problem since
  migrations do not guarantee that it will work this way.
- You can perform some operations multiple times
- Possible other evil things may happen

So, what to do in this case?
Well, you can do whatever it takes to run migrations in a single thread.
For example, you can create a separate container to do just that.
Other options are fine as well.


Postgres
--------

Sometimes using ``postgres`` inside a container
`is not a good idea <https://myopsblog.wordpress.com/2017/02/06/why-databases-is-not-for-containers/>`_.
So, what should be done in this case?

First of all, move your database ``docker`` service definition
inside ``docker-compose.override.yml``.
Doing so will not affect development,
but will remove database service from production.
Next, you will need to specify `extra_hosts <https://docs.docker.com/compose/compose-file/#extra_hosts>`_
to contain your ``postgresql`` address.
Lastly, you would need to add new hosts to ``pg_hba.conf``.

`Here <http://winstonkotzan.com/blog/2017/06/01/connecting-to-external-postgres-database-with-docker.html>`_
is a nice tutorial about this topic.


Caddy
-----

Let's Encrypt
~~~~~~~~~~~~~

We are using ``Caddy`` and ``Let's Encrypt`` for HTTPS.
The Caddy webserver used in the default configuration will get
you a valid certificate from ``Let's Encrypt`` and update it automatically.
All you need to do to enable this is to make sure
that your DNS records are pointing to the server Caddy runs on.

Read more: `Automatic HTTPS <https://caddyserver.com/docs/automatic-https>`_
in Caddy docs.

Caddyfile validation
~~~~~~~~~~~~~~~~~~~~

You can also run ``-validate`` command to validate ``Caddyfile`` contents.

Here's it would look like:

.. code:: bash

  docker-compose -f docker-compose.yml -f docker/docker-compose.prod.yml
  run --rm caddy -validate

This check is not included in the pipeline by default,
because it is quite long to start all the machinery for this single check.

Disabling HTTPS
~~~~~~~~~~~~~~~

You would need to `disable <https://caddyserver.com/docs/tls>`_
``https`` inside ``Caddy`` and in production settings for Django.
Because Django itself also redirects to `https`.
See `docs <https://docs.djangoproject.com/en/2.2/ref/settings/#secure-ssl-redirect>`_.

You would also need to disable ``manage.py check``
in ``docker/ci.sh``.
Otherwise, your application won't start,
it would not pass ``django``'s security checks.

Disabling WWW subdomain
~~~~~~~~~~~~~~~~~~~~~~~

If you for some reason do not require ``www.`` subdomain,
then delete ``www.{$DOMAIN_NAME}`` section from ``Caddyfile``.

Third-Level domains
~~~~~~~~~~~~~~~~~~~

You have to disable ``www`` subdomain if
your app works on third-level domains like:

- ``kira.wemake.services``
- ``support.myapp.com``

Otherwise, ``Caddy`` will server redirects to ``www.example.yourdomain.com``.


Further reading
---------------

- Django's deployment `checklist <https://docs.djangoproject.com/en/dev/howto/deployment/checklist/#deployment-checklist>`_

docs/pages/template/overview.rst METASEP
Overview
========


System requirements
-------------------

- ``git`` with a version at least ``2.16`` or higher
- ``docker`` with a version at least ``18.02`` or higher
- ``docker-compose`` with a version at least ``1.21`` or higher
- ``python`` with exact version, see ``pyproject.toml``


Architecture
------------

config
~~~~~~

- ``config/.env.template`` - a basic example of what keys must be contained in
  your ``.env`` file, this file is committed to VCS
  and must not contain private or secret values
- ``config/.env`` - main file for secret configuration,
  contains private and secret values, should not be committed to VCS

root project
~~~~~~~~~~~~

- ``README.md`` - main readme file, it specifies the entry
  point to the project's documentation
- ``.dockerignore`` - specifies what files should not be
  copied to the ``docker`` image
- ``.editorconfig`` - file with format specification.
  You need to install the required plugin for your IDE in order to enable it
- ``.gitignore`` - file that specifies
  what should we commit into the repository and we should not
- ``.gitlab-ci.yml`` - GitLab CI configuration file.
  It basically defines what to do with your project
  after pushing it to the repository. Currently it is used for testing
  and releasing a ``docker`` image
- ``docker-compose.yml`` - this the file specifies ``docker`` services
  that are needed for development and testing
- ``docker-compose.override.yml`` - local override for ``docker-compose``.
  Is applied automatically and implicitly when
  no arguments provided to ``docker-compose`` command
- ``manage.py`` - main file for your ``django`` project.
  Used as an entry point for the ``django`` project
- ``pyproject.toml`` - main file of the project.
  It defines the project's dependencies.
- ``poetry.lock`` - lock file for dependencies.
  It is used to install exactly the same versions of dependencies on each build
- ``setup.cfg`` - configuration file, that is used by all tools in this project
- ``locale/`` - helper folder, that is used to store locale data,
  empty by default
- ``sql/`` - helper folder, that contains ``sql`` script for database setup
  and teardown for local development

server
~~~~~~

- ``server/__init__.py`` - package definition, empty file
- ``server/urls.py`` - ``django`` `urls definition <https://docs.djangoproject.com/en/2.2/topics/http/urls/>`_
- ``server/wsgi.py`` - ``django`` `wsgi definition <https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface>`_
- ``server/apps/`` - place to put all your apps into
- ``server/apps/main`` - ``django`` application, used as an example,
  could be removed
- ``server/settings`` - settings defined with ``django-split-settings``,
  see this `tutorial <https://medium.com/wemake-services/managing-djangos-settings-e2b7f496120d>`_
  for more information
- ``server/templates`` - external folder for ``django`` templates,
  used for simple files as ``robots.txt`` and so on

docker
~~~~~~

- ``docker/ci.sh`` - file that specifies all possible checks that
  we execute during our CI process
- ``docker/docker-compose.prod.yml`` - additional service definition file
  used for production
- ``docker/django/Dockerfile`` - ``django`` container definition,
  used both for development and production
- ``docker/django/entrypoint.sh`` - entry point script that is used
  when ``django`` container is starting
- ``docker/django/gunicorn.sh`` - production script for ``django``,
  that's how we configure ``gunicorn`` runner
- ``docker/caddy/Caddyfile`` - configuration file for Caddy webserver

tests
~~~~~

- ``tests/test_server`` - tests that ensures that basic ``django``
  stuff is working, should not be removed
- ``tests/test_apps/test_main`` - example tests for the ``django`` app,
  could be removed
- ``tests/conftest.py`` - main configuration file for ``pytest`` runner

docs
~~~~

- ``docs/Makefile`` - command file that builds the documentation for Unix
- ``docs/make.bat`` - command file for Windows
- ``docs/conf.py`` - ``sphinx`` configuration file
- ``docs/index.rst`` - main documentation file, used as an entry point
- ``docs/pages/project`` - folder that will contain
  documentation written by you!
- ``docs/pages/template`` - folder that contains documentation that
  is common for each project built with this template
- ``docs/documents`` - folder that should contain any documents you have:
  spreadsheets, images, requirements, presentations, etc
- ``docs/requirements.txt`` - helper file, contains dependencies
  for ``readthedocs`` service. Can be removed
- ``docs/README.rst`` - helper file for this directory,
  just tells what to do next


Container internals
-------------------

We use the ``docker-compose`` to link different containers together.
We also utilize different ``docker`` networks to control access.

Some containers might have long starting times, for example:

- ``postgres``
- ``rabbitmq``
- frontend, like ``node.js``

To be sure that container is started at the right time,
we utilize ``dockerize`` `script <https://github.com/jwilder/dockerize>`_.
It is executed inside ``docker/django/entrypoint.sh`` file.

We start containers with ``tini``.
Because this way we have a proper signal handling
and eliminate zombie processes.
Read the `official docs <https://github.com/krallin/tini>`_ to know more.

docs/pages/template/linters.rst METASEP
.. _linters:

Linters
=======

This project uses several linters to make coding style consistent.
All configuration is stored inside ``setup.cfg``.


wemake-python-styleguide
------------------------

``wemake-python-styleguide`` is a ``flake8`` based plugin.
And it is also the strictest and most opinionated python linter ever.
See `wemake-python-styleguide <https://wemake-python-styleguide.readthedocs.io/en/latest/>`_
docs.

Things that are included in the linting process:

- `flake8 <http://flake8.pycqa.org/>`_ is used a general tool for linting
- `isort <https://github.com/timothycrosley/isort>`_ is used to validate ``import`` order
- `bandit <https://github.com/PyCQA/bandit>`_ for static security checks
- `eradicate <https://github.com/myint/eradicate>`_ to find dead code
- and more!

Running linting process for all ``python`` files in the project:

.. code:: bash

  flake8 .

Extra plugins
~~~~~~~~~~~~~

We also use some extra plugins for ``flake8``
that are not bundled with ``wemake-python-styleguide``:

- `flake8-pytest <https://github.com/vikingco/flake8-pytest>`_ - ensures that ``pytest`` best practices are used
- `flake8-pytest-style <https://github.com/m-burst/flake8-pytest-style>`_ - ensures that ``pytest`` tests and fixtures are written in a single style
- `flake8-django <https://github.com/rocioar/flake8-django>`_ - plugin to enforce best practices in a ``django`` project


django-migration-linter
-----------------------

We use ``django-migration-linter`` to find backward incompatible migrations.
It allows us to write 0-downtime friendly code.

See `django-migration-linter <https://github.com/3YOURMIND/django-migration-linter>`_
docs, it contains a lot of useful information about ways and tools to do it.

That's how this check is executed:

.. code:: bash

  python manage.py lintmigrations --exclude-apps=axes

Important note: you might want to exclude some packages with broken migrations.
Sometimes, there's nothing we can do about it.


yamllint
--------

Is used to lint your ``yaml`` files.
See `yamllint <https://github.com/adrienverge/yamllint>`_ docs.

.. code:: bash

  yamllint -d '{"extends": "default", "ignore": ".venv"}' -s .


dotenv-linter
-------------

Is used to lint your ``.env`` files.
See `dotenv-linter <https://github.com/wemake-services/dotenv-linter>`_ docs.

.. code:: bash

  dotenv-linter config/.env config/.env.template


polint and dennis
-----------------

Are used to lint your ``.po`` files.
See `polint <https://github.com/ziima/polint>`_ docs.
Also see `dennis <https://dennis.readthedocs.io/en/latest/linting.html>`_ docs.

.. code:: bash

  polint -i location,unsorted locale
  dennis-cmd lint --errorsonly locale


Packaging
---------

We also use ``pip`` and ``poetry`` self checks to be sure
that packaging works correctly.

.. code:: bash

  poetry check && pip check


Linters that are not included
-----------------------------

Sometimes we use several other linters that are not included.
That's because they require another technology stack to be installed
or just out of scope.

We also recommend to check the list of linters
`recommended by wemake-python-styleguide <https://wemake-python-stylegui.de/en/latest/pages/usage/integrations/extras.html>`_.

Here's the list of these linters. You may still find them useful.

shellcheck
~~~~~~~~~~

This linter is used to lint your ``.sh`` files.
See `shellcheck <https://www.shellcheck.net/>`_ docs.

hadolint
~~~~~~~~

This linter is used to lint your ``Dockerfile`` syntax.
See `hadolint <https://github.com/hadolint/hadolint>`_

docs/pages/template/gitlab-ci.rst METASEP
Gitlab CI
=========

We use ``Gitlab CI`` to build our containers, test it,
and store them in the internal registry.

These images are then pulled into the production servers.


Configuration
-------------

All configuration is done inside ``.gitlab-ci.yml``.


Pipelines
---------

We have two pipelines configured: for ``master`` and other branches.
That's how it works: we only run testing for feature branches and do the whole
building/testing/deploying process for the ``master`` branch.

This allows us to speed up development process.


Automatic dependencies update
-----------------------------

You can use `dependabot <https://github.com/dependabot/dependabot-script>`_
to enable automatic dependencies updates via Pull Requests to your repository.
Similar to the original template repository: `list of pull requests <https://github.com/wemake-services/wemake-django-template/pulls?q=is%3Apr+author%3Aapp%2Fdependabot>`_.

It is available to both Github and Gitlab.
But, for Gitlab version you currently have to update your `.gitlab-ci.yml <https://github.com/dependabot/dependabot-script/blob/master/.gitlab-ci.example.yml>`_.


Secret variables
----------------

If some real secret variables are required, then you can use `gitlab secrets <https://docs.gitlab.com/ee/ci/variables/#secret-variables>`_.
And these kind of variables are required *most* of the time.

See :ref:`django` on how to use ``dump-env`` and ``gitlab-ci`` together.


Documentation
-------------
After each deploy from master branch this documentation compiles into nice looking html page.
See `gitlab pages info <https://docs.gitlab.com/ee/user/project/pages/>`_.


Further reading
---------------

- `Container Registry <https://gitlab.com/help/user/project/container_registry>`_
- `Gitlab CI/CD <https://about.gitlab.com/features/gitlab-ci-cd/>`_

docs/pages/template/faq.rst METASEP
Frequently asked questions
==========================

Will you ever support drf / celery / flask / gevent?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

No. This template is focused on bringing best practices to ``django``
projects. It only includes workflow and configuration for this framework.

Other tools are not mandatory. And can easily be added by a developer.

Will you have an build-time option to include or change anything?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

No, we believe that options bring inconsistencies to the project.
You can also make the wrong choice. So, we are protecting you from that.

You can only have options that are already present in this template.
Fork it, if you do not agree with this policy.

This code quality is unbearable! Can I turn it off?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Of course, no one can stop you from that.
But what the point in using this template then?

Our code quality defined by this template is minimally acceptable.
We know tools to make it even better. But they are not included.
Since they are literally hardcore.

docs/pages/template/documentation.rst METASEP
Documentation
=============

`We <https://github.com/wemake-services/meta>`_ write a lot of documentation.
Since we believe, that documentation is a crucial factor
which defines project success or failure.

Here's how we write docs for ``django`` projects.


Dependencies
------------

We are using ``sphinx`` as a documentation builder.
We use ``sphinx.ext.napoleon`` to write
pretty docstrings inside the source code.
We also use ``sphinx_autodoc_typehints`` to inject type annotations into docs.

We also use two sources of truth for the dependencies here:

- ``docs/requirements.txt``
- ``pyproject.toml``

Why? Because we are using ReadTheDocs
for this template (only for original Github repo), and it
does only support traditional ``requirements.txt``.


Structure
---------

We use a clear structure for this documentation.

- ``pages/template`` contains docs
  from `wemake-django-template <https://github.com/wemake-services/wemake-django-template>`_.
  These files should not be modified locally.
  If you have any kind of question or problems,
  just open an issue `on github <https://github.com/wemake-services/wemake-django-template/issues>`_
- ``pages/project`` contains everything related to the project itself.
  Usage examples, an auto-generated documentation from your source code,
  configuration, business, and project goals
- ``documents`` contains different non-sphinx documents
  like ``doc`` files, spreadsheets, and mockups

Please, do not mix it up.

How to structure project docs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

It is a good practice to write a single ``rst`` document
for every single ``py`` file.
Obviously, ``rst`` structure fully copies the structure of your source code.
This way it is very easy to navigate through the docs,
since you already know the structure.

For each ``django`` application we tend to create
a file called ``index.rst`` which is considered
the main file for the application.

And ``pages/project/index.rst`` is the main file for the whole project.


How to contribute
-----------------

We enforce everyone to write clean and explaining documentation.
However, there are several rules about writing styling.

We are using `doc8 <https://pypi.python.org/pypi/doc8>`_ to validate our docs.
So, here's the command to do it:

.. code:: bash

  doc8 ./docs

This is also used in our CI process, so your build will fail
if there are violations.


Useful plugins
--------------

Some ``sphinx`` plugins are not included, since they are very specific.
However, they are very useful:

- `sphinxcontrib-mermaid <https://github.com/mgaitan/sphinxcontrib-mermaid>`_ - sphinx plugin to create general flowcharts, sequence and gantt diagrams
- `sphinxcontrib-plantuml <https://github.com/sphinx-contrib/plantuml/>`_ - sphinx plugin to create UML diagrams
- `nbsphinx <https://github.com/spatialaudio/nbsphinx>`_ - sphinx plugin to embed ``ipython`` notebooks into your docs


Further reading
---------------

- `sphinx <http://www.sphinx-doc.org/en/stable/>`_
- `sphinx with django <https://docs.djangoproject.com/en/2.2/internals/contributing/writing-documentation/#getting-started-with-sphinx>`_
- `sphinx-autodoc-typehints <https://github.com/agronholm/sphinx-autodoc-typehints>`_
- `Architecture Decision Record (ADR) <https://github.com/joelparkerhenderson/architecture_decision_record>`_
- `adr-tools <https://github.com/npryce/adr-tools>`_

docs/pages/template/django.rst METASEP
.. _django:

Django
======


Configuration
-------------

We share the same configuration structure for almost every possible
environment.

We use:

- ``django-split-settings`` to organize ``django``
  settings into multiple files and directories
- ``.env`` files to store secret configuration
- ``python-decouple`` to load ``.env`` files into ``django``

Components
~~~~~~~~~~

If you have some specific components like ``celery`` or ``mailgun`` installed,
they could be configured in separate files.
Just create a new file in ``server/settings/components/``.
Then add it into ``server/settings/__init__.py``.

Environments
~~~~~~~~~~~~

To run ``django`` on different environments just
specify ``DJANGO_ENV`` environment variable.
It must have the same name as one of the files
from ``server/settings/environments/``.
Then, values from this file will override other settings.

Local settings
~~~~~~~~~~~~~~

If you need some specific local configuration tweaks,
you can create file ``server/settings/environments/local.py.template``
to ``server/settings/environments/local.py``.
It will be loaded into your settings automatically if exists.

.. code:: bash

  cp server/settings/environments/local.py.template server/settings/environments/local.py

See ``local.py.template`` version for the reference.


Secret settings
---------------

We share the same mechanism for secret settings for all our tools.
We use ``.env`` files for ``django``, ``postgres``, ``docker``, etc.

Initially, you will need to copy file
``config/.env.template`` to ``config/.env``:

.. code:: bash

  cp config/.env.template config/.env

When adding any new secret ``django`` settings you will need to:

1. Add new key and value to ``config/.env``
2. Add new key without value to ``config/.env.template``,
   add a comment on how to get this value for other users
3. Add new variable inside ``django`` settings
4. Use ``python-decouple`` to load this ``env`` variable like so:
   ``MY_SECRET = config('MY_SECRET')``


Secret settings in production
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We do not store our secret settings inside our source code.
All sensible settings are stored in ``config/.env`` file,
which is not tracked by the version control.

So, how do we store secrets? We store them as secret environment variables
in `GitLab CI <https://docs.gitlab.com/ce/ci/variables/README.html#secret-variables>`_.
Then we use `dump-env <https://github.com/sobolevn/dump-env>`_
to dump variables from both environment and ``.env`` file template.
Then, this file is copied inside ``docker`` image and when
this image is built - everything is ready for production.

Here's an example:

1. We add a ``SECRET_DJANGO_SECRET_KEY`` variable to Gitlab CI secret variables
2. Then ``dump-env`` dumps ``SECRET_DJANGO_SECRET_KEY``
   as ``DJANGO_SECRET_KEY`` and writes it to ``config/.env`` file
3. Then it is loaded by ``django`` inside the settings:
   ``SECRET_KEY = config('DJANGO_SECRET_KEY')``

However, there are different options to store secret settings:

- `ansible-vault <https://docs.ansible.com/ansible/2.4/vault.html>`_
- `git-secret <https://github.com/sobolevn/git-secret>`_
- `Vault <https://www.vaultproject.io/>`_

Depending on a project we use different tools.
With ``dump-env`` being the default and the simplest one.


Extensions
----------

We use different ``django`` extensions that make your life easier.
Here's a full list of the extensions for both development and production:

- `django-split-settings`_ - organize
  ``django`` settings into multiple files and directories.
  Easily override and modify settings.
  Use wildcards in settings file paths and mark settings files as optional
- `django-axes`_ - keep track
  of failed login attempts in ``django`` powered sites
- `django-csp`_ - `Content Security Policy`_ for ``django``
- `django-referrer-policy`_ - middleware implementing the `Referrer-Policy`_
- `django-health-check`_ - checks for various conditions and provides reports
  when anomalous behavior is detected
- `django-add-default-value`_ - this django Migration Operation can be used to
  transfer a Fields default value to the database scheme
- `django-deprecate-fields`_ - this package allows deprecating model fields and
  allows removing them in a backwards compatible manner
- `django-migration-linter`_ - detect backward incompatible migrations for
  your django project
- `zero-downtime-migrations`_ - apply ``django`` migrations on PostgreSql
  without long locks on tables

Development only extensions:

- `django-debug-toolbar`_ - a configurable set of panels that
  display various debug information about the current request/response
- `django-querycount`_ - middleware that prints the number
  of DB queries to the runserver console
- `nplusone`_ - auto-detecting the `n+1 queries problem`_ in ``django``

.. _django-split-settings: https://github.com/sobolevn/django-split-settings
.. _django-axes: https://github.com/jazzband/django-axes
.. _django-csp: https://github.com/mozilla/django-csp
.. _`Content Security Policy`: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
.. _django-referrer-policy: https://github.com/ubernostrum/django-referrer-policy
.. _`Referrer-Policy`: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
.. _django-health-check: https://github.com/KristianOellegaard/django-health-check
.. _django-add-default-value: https://github.com/3YOURMIND/django-add-default-value
.. _django-deprecate-fields: https://github.com/3YOURMIND/django-deprecate-fields
.. _django-migration-linter: https://github.com/3YOURMIND/django-migration-linter
.. _zero-downtime-migrations: https://github.com/yandex/zero-downtime-migrations
.. _django-debug-toolbar: https://github.com/jazzband/django-debug-toolbar
.. _django-querycount: https://github.com/bradmontgomery/django-querycount
.. _nplusone: https://github.com/jmcarp/nplusone
.. _`n+1 queries problem`: https://stackoverflow.com/questions/97197/what-is-the-n1-select-query-issue


Further reading
---------------

- `django-split-settings tutorial <https://medium.com/wemake-services/managing-djangos-settings-e2b7f496120d>`_
- `docker env-file docs <https://docs.docker.com/compose/env-file/>`_


Django admin
~~~~~~~~~~~~

- `Django Admin Cookbook <https://books.agiliq.com/projects/django-admin-cookbook/en/latest/>`_

docs/pages/template/development.rst METASEP
Development
===========

Our development process is focused on high quality and development comfort.
We use tools that are proven to be the best in class.

There are two possible ways to develop your apps.

1. local development
2. development inside ``docker``

You can choose one or use both at the same time.
How to choose what method should you use?

Local development is much easier and much faster.
You can choose it if you don't have too many infrastructure dependencies.
That's a default option for the new projects.

Choosing ``docker`` development means that you already have a complex
setup of different technologies, containers, networks, etc.
This is a default option for older and more complicated projects.


Dependencies
------------

We use ``poetry`` to manage dependencies.
So, please do not use ``virtualenv`` or ``pip`` directly.
Before going any further, please,
take a moment to read the `official documentation <https://poetry.eustace.io/>`_
about ``poetry`` to know some basics.

If you are using ``docker`` then prepend ``docker-compose run --rm web``
before any of those commands to execute them.

Please, note that you don't need almost all of them with ``docker``.
You can just skip this sub-section completely.
Go right to `Development with docker`_.

Installing dependencies
~~~~~~~~~~~~~~~~~~~~~~~

You do not need to run any of these command for ``docker`` based development,
since it is already executed inside ``Dockerfile``.

Please, note that ``poetry`` will automatically create a ``virtualenv`` for
this project. It will use you current ``python`` version.
To install all existing dependencies run:

.. code:: bash

  poetry install

To install dependencies for production use, you will need to run:

.. code:: bash

  poetry install --no-dev

And to activate ``virtualenv`` created by ``poetry`` run:

.. code:: bash

  poetry shell

Adding new dependencies
~~~~~~~~~~~~~~~~~~~~~~~

To add a new dependency you can run:

- ``poetry add django`` to install ``django`` as a production dependency
- ``poetry add --dev pytest`` to install ``pytest``
  as a development dependency

This command might be used with ``docker``.

Updating poetry version
~~~~~~~~~~~~~~~~~~~~~~~

Package managers should also be pinned very strictly.
We had a lot of problems in production
because we were not pinning package manager versions.

This can result in broken ``lock`` files, inconsistent installation process,
bizarre bugs, and missing packages. You do not want to experience that!

How can we have the same ``poetry`` version for all users in a project?
That's where ``[build-system]`` tag shines. It specifies the exact version of
your ``poetry`` installation that must be used for the project.
Version mismatch will fail your build.

When you want to update ``poetry``, you have to bump it in several places:

1. ``pyproject.toml``
2. ``docker/django/Dockerfile``

Then you are fine!


Development with docker
-----------------------

To start development server inside ``docker`` you will need to run:

.. code:: bash

  docker-compose build
  docker-compose run --rm web python manage.py migrate
  docker-compose up

Running scripts inside docker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

As we have already mentioned inside the previous section
we use ``docker-compose run`` to run scripts inside docker.

What do you need to know about it?

1. You can run anything you want: ``poetry``, ``python``, ``sh``, etc
2. Most likely it will have a permanent effect, due to ``docker volumes``
3. You need to use ``--rm`` to automatically remove this container afterward

**Note**: ``docker`` commands do not need to use ``virtualenv`` at all.

Extra configuration
~~~~~~~~~~~~~~~~~~~

You might want to tweak ``INTERNAL_IPS`` ``django`` setting
to include your ``docker`` container address into it.
Otherwise ``django-debug-toolbar`` might not show up.

To get your ``docker`` ip run:

.. code:: bash

  docker inspect your-container-name | grep -e '"Gateway"'

You can also configure a permanent hostname inside your ``/etc/hosts`` to
access your ``docker`` containers with a permanent hostname.


Local development
-----------------

When cloning a project for the first time you may
need to configure it properly,
see :ref:`django` section for more information.

**Note**, that you will need to activate ``virtualenv`` created
by ``poetry`` before running any of these commands.
**Note**, that you only need to run these commands once per project.

Local database
~~~~~~~~~~~~~~

When using local development environment without ``docker``,
you will need a ``postgres`` up and running.
To create new development database run
(make sure that database and user names are correct for your case):

.. code:: bash

  psql postgres -U postgres -f sql/create_database.sql

Then migrate your database:

.. code:: bash

  python manage.py migrate

Running project
~~~~~~~~~~~~~~~

If you have reached this point, you should be able to run the project.

.. code:: bash

  python manage.py runserver

docs/pages/project/.gitkeep METASEP

00-project-documentation/platform-design/platform-design/README.md METASEP
# Platform Designs

In this folder, you will find key information about the **Design** of the AutSPACEs platform. 

## Where to start. 

This is the Project Management repository for the AutSPACEs project. Part of the AutSPACEs project is the development of the AutSPACEs platform, however good design is not limited to just web applications, which is why this folder sits here. 

### How to Contribute
* If you are new to design and UX, you can get started by reading through the [design-process](./design-process/) folder which gives an overview of what design is, the design process AutSPACEs uses, and definitions for the design terminology that is used. 

* If you are returning or are a designer wanting to get involved, first read our [Contributing Guidelines](/contributing-guidelines.md) and then familiarize yourself with the resources found in this repository. 

⚠️ A quick reminder that if you would like to work on the code or development of the AutSPACEs platform (for example implementing the design system) then the repository you're in right now contains the platform's code, but this folder contains only information on the platform's design **NOT** the code.

**All contributions are wellcome!**

## Contents 

### [design-process](./design-process/) 
This folder contains information about the process we are following to design the AutSPACEs platform, including and introduction to **Design Thinking** and User Experience Design.

### [design-requirements](./design-requirements/)
This folder contains key information on the requirements for each page (what content **must** go on each of the platform's pages). 
This allows you to see what specific features will be needed from each page of the platform.

### [design-research](./design-research/)
This folder contains key information or links to all "user research" related resources that were made during the co-creation process to help shape the platform's design. It has summaries and is focused heavily on design decisions. There is a separate folder for focus groups and community feedback. 

### [design-system](./design-system/)
This folder contains information about the design system that is used in the platform.
You can find more information on what a design system is at the Adobe website [here]()

### [platform-architecture](./platform-architecture/) 
The design-architecture folder contains information relating to how the pages of the platform fit together and how someone can navigate the platform. 

### [platform-content](./platform-content/) 
This folder contains written content for webpages (sometimes called "copy" by the design community), assets, and other content related material for the platform.

### [wireframes](./wireframes/)
*Wireframes are visual guides showing the layout and design of the platform.*
The wireframes folder contains the wireframes that have been developed for the autspaces platform. 

00-project-documentation/community/user-tests/README.md METASEP
# User Tests

This folder contains feedback and observations from user testing the AutSPACEs platform with community members. 

00-project-documentation/community/moderation-workshop/moderation-report.md METASEP
# Moderation Report

## Contents

**[Key](#key)**

**[Platform - purpose](#platform---purpose)**

**[Motivation to take part](#motivation-to-take-part)**

**[Diagnosis or original awareness of autism](#diagnosis-or-original-awareness-of-autism)**

**[How should we think and talk about autistic people and autism?](#how-should-we-think-and-talk-about-autistic-people-and-autism)**

**[Experiences of sensory processing differences](#experiences-of-sensory-processing-differences)**

**[Non-autistic responses to autistic people and autism](#non-autistic-responses-to-autistic-people-and-autism)**

**[Code of Conduct](#code-of-conduct)**

**[Feedback on existing code of conduct](#feedback-on-existing-code-of-conduct)**

**[Tone](#tone)**

**[Metaphorical/non-literal language](#metaphoricalnon-literal-language)**

**[Negative language](#negative-language)**

**[Emotions](#emotions)**

**[Speaking on behalf of others/supporting others to speak](#speaking-on-behalf-of-otherssupporting-others-to-speak)**

**[Peer support](#peer-support)**

**[Supporting parents and carers](#supporting-parents-and-carers)**

**[Accessibility](#accessibility)**

**[Inclusion](#inclusion)**

**[Socio-economic](#socio-economic)**

**[Age](#age)**

**[Gender](#gender)**

**[Glossary](#glossary)**

**[Segmentation](#segmentation)**

**[Platform design](#platform-design)**

**[Communication strategy](#communication-strategy)**

**[Moderation flow](#moderation-flow)**

**[Quantity of posts](#quantity-of-posts)**

**[Self-moderating the posts you share](#self-moderating-the-posts-you-share)**

**[Self-moderating the posts you view](#self-moderating-the-posts-you-view)**

**[Flagging comments](#flagging-comments)**

**[Rating systems](#rating-systems)**

**[Recourse policies](#recourse-policies)**

**[Moderators](#moderators)**

**[Who should moderate?](#who-should-moderate)**

**[Interactions between moderators and users](#interactions-between-moderators-and-users)**

**[Moderator training and guidelines](#moderator-training-and-guidelines)**

**[Risks](#risks)**

**[Platform becomes too interactive](#platform-becomes-too-interactive)**

**[Public posts causing distress to users](#public-posts-causing-distress-to-users)**

**[Responses to moderation causing distress](#responses-to-moderation-causing-distress)**

**[Venting](#venting)**

**[Libellous posts](#libellous-posts)**

**[Vexatious or malicious posts](#vexatious-or-malicious-posts)**

**[Posts becoming too open-ended](#posts-becoming-too-open-ended)**

**[Research fidelity/scientific validity](#research-fidelityscientific-validity)**

**[Sensory processing research](#sensory-processing-research)**

**[Research methods](#research-methods)**

**[Process](#process)**

**[Feedback](#feedback)**

**[Participatory science and impact](#participatory-science-and-impact)**

### Key

Connection to Autism

Bold capital letter

**A =** Autistica

**P =** Parent of an autistic person

Specialist role on the project

Regular capital letter

R = Researcher

Organisation or institution

_T =_ The Alan Turing Institute

A = Autistica

Connection to experience

d = direct connection to experience (based on own perspective)

i = indirect connection to experience (inferring views or experiences of others)

g = general comment (speaking broadly about a group as a whole)

## **Platform - purpose**

**A, P** , g: &quot;…with this potential…really powerful source of information, we&#39;ve identified certain things we could do to optimise the use of it&quot;

**A, P** , d: &quot;…what I feel is very important about the whole project today…is that sensory differences, even though there&#39;s research out that says its prevalent in up to 90% of people, it&#39;s still very under-addressed and un-empathised with&quot;

**A** , d: &quot;…because people are able to express themselves in tons of different places, like blogs or whatever, and you&#39;ve just flagged some of the issues about people who just take stuff off social media or whatever, would it be a situation where you could put a call out and say, &#39;if you&#39;ve written about this on your blog or whatever you could just copy and paste it&#39;&quot;

R, d: &quot;…I think people would be allowed to self-plagiarise. I think people could copy and paste their own stuff onto there and that would be fine. But I think a call for specific experiences - I don&#39;t think we&#39;ve thought about that specifically. I think there&#39;s a lot of steps before we get there&quot;

R, d: &quot;I think this idea of getting people&#39;s stories as people go about their daily lives is both to give autistic people a platform on which their voices are heard, to educate non-autistic people that this [sensory processing differences] is a really thing, and really what matters is someone else&#39;s experience.&quot;

**A,** d: &quot;I would be concerned if people were understanding that it&#39;s all things for all people – it&#39;s for a specific purpose, and therefore you will have lines that just can&#39;t be crossed, and that&#39;s okay if you want to go and put it elsewhere, but you need to maintain an ecosystem, that&#39;s how I would approach it.&quot;

**A** , d: &quot;It doesn&#39;t seem to me to be like a Reddit thread that could run out of control. It&#39;s not a message board, it&#39;s not Twitter, it&#39;s not something that people can comment on&quot;

R, _T_, g: &quot;…one of the things that&#39;s come up is, there are lots and lots of places for autistic people and parents of autistic people and autistic parents of autistic people, there&#39;s lots of places for people with complex needs to share their experiences – you can go on blogs, you can look on other social media platforms, forums and so on…some of those [platforms] are used for research, but they&#39;re not often used for research, so a lot of times the experiences that autistic people have don&#39;t actually make it into the knowledge, into the minds of people who can change things&quot;

R, _T_, d: &quot;…unfortunately, for rightly or wrongly, blog posts don&#39;t carry as much policy making emphasis as a research paper&quot;

R, _T_, g: &quot;…there&#39;s a bridging aspect of saying that there&#39;s all of this knowledge that&#39;s not getting into the minds of probably neurotypical people, who probably don&#39;t understand the diversity of experience&quot;

**A** , d &quot;…for me at the moment I feel like it is almost unclear what is the main purpose of this platform - because I&#39;ve seen the communities that are online, I don&#39;t think it would be needed to vent, and I don&#39;t really understand why people would feel the need to use a brand-new platform to do so&quot;

**A** , d: &quot;That&#39;s the issue of giving people the right brief…even just a really simple example of that, and trying to engender a sense of…what&#39;s useful for research and describing what happened, rather than why it made you feel a certain way, is maybe more useful&quot;

**A** , d **:**&quot;It has to be emphasised that that is what this is – it isn&#39;t a site to let go of your feelings, it&#39;s a site to inform us about your experiences&quot;

**P, A** , d: &quot;When I first looked at the stuff that was sent around briefly, my first comment was, &quot;hey, this needs to be a platform for autistic people to also become more self-aware about sensory&quot;

**P, A** , d: Autistic people offer each other, &quot;peer support type thing and mentoring…I think that has to be a real… key part of this forum, and I think that has to be really up there&quot;

**P, A** , g: &quot;Where we see a [in]…a lot of autistic communities money going to non-autistic organisations to support the autistic person&quot;.

**P, A** , g: &quot;What we&#39;re not seeing is the effort and resources for autistic people to support themselves, and provide peer support and mentoring, from those shared experiences&quot;

**P, A** , d: &quot;This would be a real missed opportunity if it&#39;s [the platform] not achieving that [creating self-awareness] as well. It&#39;s peer support, sharing strategies.

**P, A** , d: &quot;That [sharing strategies] was mentioned in the presentation, but that emphasis didn&#39;t come out in the…bits I&#39;d scanned quickly before the meeting.&quot;

**P, A** , g: &quot;…by doing that [sharing strategies] and sharing with other people it helps autistic people, but also others who have relationships with them: so families, communities, schools…&quot;

**P, A** , d: &quot;…because we don&#39;t have an interactive element…like on the Insight Facebook page, I would have thought that this was data collection and research first and foremost, and that ultimately when it came to a certain point, then someone might be tasked with the responsibility of extracting what was useful to – I don&#39;t know, form the basis for peer support.&quot;

**P, A** , d: &#39;I just wanted to make a general comment on…everything here – we talk about…the current thinking is autistic voice first, but welcoming all voices related to the community, but I&#39;m thinking, the autistic voice is always the minor voice in terms of number…so it may not be balanced on there.&quot;

**P** , g: &quot;…obviously the emphasis, the priority has to be the people on the people on the spectrum, I don&#39;t think there&#39;s any doubt about it.&quot;

R, _T,_ d: &quot;…it&#39;s not a social media platform, you&#39;re not responding to it, it&#39;s not a forum, it&#39;s not where you have conversations with people, but it is supposed to be useful in terms of seeing what other people are experiencing and maybe seeing yourself in some of those&quot;

**A,** d: &quot;I&#39;ve been blogging for 9 years, and I&#39;m on multiple communities online…I won&#39;t deny when I started working with young reps and they said, &#39;yeah is that necessary, there&#39;s information sits everywhere&#39;, and now that I&#39;ve seen it I&#39;m like, &#39;oh man yes this is perfect&#39;, so it might just be that I can&#39;t visualise it yet, but it might just be the whole iPad situation where you don&#39;t think it&#39;s necessary and then everyone needs one&quot;

**A,** g: &quot;It makes sense that this is an information collection site…and I think that&#39;s kind of how it has to be known almost because…there are people who want to come on for answers, and there are people who said that in the previous group as well&quot;

**A,** g: &quot;I just think there are so many other platforms where people already go for support, you know, you&#39;ve already mentioned Twitter, Instagram and Facebook…&quot;

**A, P** , d: &quot;It&#39;s information about sensory processes, not support&quot;

**A** , d: &quot;…it&#39;s not a chatroom, it&#39;s not a Reddit thread&quot;

**A,** d: &quot;…it seems to me that the burden is on the researchers to really set out at the beginning what this [platform] is for – and constructive contribution&#39;s helpful&quot;

**A,** d: &quot;…it seems to me that that is what this kind of research is useful for – the people using it should trying to be building solutions, and it doesn&#39;t matter how upset someone&#39;s parents are, or how embarrassed they were in a society that doesn&#39;t understand or respect different people – it&#39;s immaterial. The point is you just have to…support their needs better, it doesn&#39;t matter how anyone feels about it.&quot;

**P** , d: &quot;I agree&quot;

**A** , d: &quot;…if I was a researcher and I particularly was interested in the experiences of autistic people and how it could be better for them, then I would be super interested in prioritising those [autistic] voices&quot;

## **Motivation to take part**

**A** , d: &quot;[When] I write it helps me process, and every time I write something difficult, I write it with the mindset that if one person reads it and thinks they&#39;re not alone, or that they can cope better with their issues, then I achieved something.&quot;

**A** , d: &quot;I never write anything just for me, and although personally I&#39;ve never reached that point where it would flag up concerns, I feel having it available. perhaps in a more secure part of the site, could be beneficial to a broad amount of people.&quot;

**P, A** , d: &quot;[sharing own stories is] why I felt more connected to the community, because I was reading blogs of non-speaking autistics, and how I became aware was not necessarily having an interaction with anyone, but reading what they had written.&quot;

**P, A** , d: &quot;I think it&#39;s just a different way [sharing experiences in writing], I suppose…it might be appealing to more people, more autistic people, because they have no expectation to talk or interact.&quot;

**P, A** , d: &quot;Perhaps we&#39;d better put a description…where people would tick the box and maybe share it with the researchers and not share it with anyone else, or, you know, they might not, they might have done that based on poor experience of people sharing if they&#39;ve put it before, so maybe there should be a description of the benefits for people, what can we gain from it, so if they read that, they&#39;ll go, &quot;oh right, so instead of being nervous about sharing it with other people I&#39;ll just tick this box&quot;.

**P, A** , d: &quot;I talk about this [platform] being a kind of mentoring as well for autistic people to autistic people, because I didn&#39;t even have a clue I had sensory issues, and it&#39;s not until recently that I started to think, well, &#39;Why do I feel dizzy?&#39;, &#39;Why do I feel staggered?&#39;, &#39;Why am I feeling like this?&#39;. I&#39;m already 13 years past diagnosis, and it&#39;s only now that I&#39;m realising, which I do, – &#39;ooh, it&#39;s a sensory thing&#39;, I&#39;m sort of feeling sick now or light-headed or staggering or not well, you know, but I didn&#39;t even know that before.&quot;

**P, A** , d: &quot;…there&#39;s a lot of probably educating people on this platform as well about sensory issues&quot;

**P, A** , i: &quot;…my son hasn&#39;t put anything in it yet [the project], although he knows that I have, and he goes &#39;what&#39;s the point of it?&#39;, &#39;what will they do with it&#39;?, and I think that somehow or other the endgame will qualify how some people will stay with the process and even report on behalf of somebody else: What&#39;s the game? What&#39;s the thing that will happen?&quot;

**P, A** , d: &quot;I think just people sharing their own story is very powerful&quot;

**A, P,** g: &quot;I wouldn&#39;t want this platform to oversimplify what sensory issues are for autistic people…It&#39;s not a matter of &#39;it&#39;s light or sound&#39;…therefore we can put our glasses on, or put earphones on, and then &quot;whoopdie-doo&quot;, all solved&quot;

## **Diagnosis or original awareness of autism**

**A** , d: &quot;I&#39;ve only been recently diagnosed in the last couple of years…back when I got to the age of about 40…so I&#39;ve been going up a learning curve pretty quickly,

**A** , d: &quot;I got diagnosed at 32, so it was a mystery for most of my life why I was so different and why I was so strange to other people&quot;

**A** , **P,** g: &quot;…just having a diagnosis doesn&#39;t help you immediately be more self-aware about who you are, your needs, or strategies to help yourself&quot;

**A** , **P** d: &quot;I wasn&#39;t diagnosed until 62&quot;

**A** , **P,** d &quot;It&#39;s an aspect of dyspraxia, I&#39;m still waiting to be assessed, but there&#39;s people who have actually had their co-occurring and co-conditions already assessed&quot;

**P** , g: &quot;…we knew about [autistic daughter&#39;s epilepsy] much earlier, we actually didn&#39;t know she had autism…until she was doing her GCSEs&quot;

**P** , i: Daughter&#39;s diagnosis was 9 years ago [when she was 16], and she is 25 now

**P** , i: &quot;…my son was diagnosed when he was 4, so really early, actually. The school noticed when he was young, when he was only in reception class.&quot;

**P** , i: &#39;he [autistic son] was diagnosed a week before his 5th birthday.&quot;

**A, P,** d: &quot;I&#39;ve been 12 years diagnosed now, and it&#39;s only been from reading the work of other autistic people having to do with sensory issues, I had no clue before.&quot;

**A,** d: &quot;…I found out about sensory difficulties within a year of my diagnosis, and it&#39;s only in the past – nine years on – that I&#39;ve begun to discover how I can work with them&quot;

**A,** d: &quot;I didn&#39;t get diagnosed until I was 40 and I held down a decent job and nobody knew, me included.&quot;

**A** , g: &quot;It&#39;s more often than not that people just don&#39;t quite have the right kind of guidance [when they first learn about autism]&quot;

**A,** i: &quot;…they [my parents] found out the hard way&quot;

## **How should we think and talk about autistic people and autism?**

**A,** d: &quot;I think also emphasising that there are 2 phenotypes would be useful – because that&#39;s why I use that term [&#39;ASC&#39;], because my official diagnosis is &#39;Asperger&#39;s syndrome&#39;, but as soon as I say it, it comes with connotations I don&#39;t meet, because I&#39;m female…so I&#39;ve never felt that is my diagnosis, so I would rather say straight out I have &#39;high-functioning&#39; autism. or I&#39;m on the autistic spectrum, than tell them I have Asperger&#39;s and have them immediately think that I&#39;m Sheldon Cooper.&quot;

**A,** d: &quot;I think that you&#39;ve raised a really good point [about the importance of terminology].&quot;

**A,** d: &quot;…what is considered to be offensive to others… is a matter of terminology as well&quot;

**A,** d: &quot;…obviously all of these conditions come with lots of different terminology.&quot;

**A,** d: &quot;I personally refer to myself as having ASD, but I know we&#39;re no longer using that term in education anymore, as my teacher once told me.&quot;

**A,** d: I know that there&#39;s a lot of terminology…and I&#39;ve met people who don&#39;t like certain terms.

**A,** d: &quot;[I&#39;ve met people] who don&#39;t like the &quot;D&quot; (&quot;disorder) … of the &#39;ASD&#39;.&quot;

**A,** d: &quot;Yeah, because it&#39;s not a disorder, it&#39;s a condition. I think they call it &#39;ASC&#39;…&quot;

**A,** d: &quot;I think for me, speaking personally, I don&#39;t really mind [about terminology].&quot;

**A,** d: &quot;I find it more distracting getting caught upon what some people think is less important, you know, the technical definition. I get distracted from the point I was actually trying to make.&quot;

**A,** d: &quot;I use that term [&#39;ASD&#39;] about myself, so I&#39;m not being disrespectful.&quot;

**P, A,** d: &quot;[In co-production group]…we always invite comments, and…when I do my representation for building design, I do such a broad stroke, I do every single neurodiversity plus other people.&quot;

**P, A,** d: &quot;I think…we need to go that route [broad neurodiversity] more&quot;

**P, A,** g: &quot;I don&#39;t like the way that [R] was positioning it, that people have different experiences of their autism… people&#39;s autism is very different for them, when actually they&#39;re autistic people with different experiences&quot;

**A, P,** d: &quot;…the other point we had was about autism: does your autism give you more trouble in this area or not, or people have different experiences about their autism, and I think that really puts people&#39;s autism as a discreet part of them, whereas really it&#39;s experiences of autistic people.&quot;

**A, P,** d: &quot;That may be with co-occurring conditions, it may be with sensory issues or anything like that, so it&#39;s important to get that right, and it may be with the literature…I think it&#39;s not &#39;experiences people have of their autism&#39;, it&#39;s &#39;experiences autistic people have.&quot;
**A,** d: &quot;Or &#39;experiences people with autism have&quot;

**A** , d: &quot;I sort of think if myself as coming in thirds…&quot;

**A** , d: &quot;…it&#39;s difficult to say this, but you can&#39;t actually force change on society around you, and that&#39;s why I&#39;ve been forced to learn over the years growing up&quot;

## **Experiences of sensory processing differences**

**A, P** , g: &quot;In my co-production [group] we have people who just say &#39;sensory triggers&#39;, because we&#39;ve got a whole lot of people who don&#39;t want to go for any form of diagnosis, but they recognise that [in] certain environments there&#39;s always auditory triggering, there&#39;s visual triggering, etc.

**P, A,** d &quot;…I shouldn&#39;t even be on the planet, I have no spatial knowledge other than crossing the main road. Every other road that exists – it&#39;s there in periphery vision…I&#39;m still in my head, I could have been knocked over umpteen times passing side roads with zero awareness of where I am… I&#39;m just moving… along this road with no sense of when there&#39;s danger, it&#39;s just – you&#39;re there but you&#39;re not there. So then if you complicate that by not being able to express it, then, I mean how are we ever going to improve environments and make it safer for people to move around?&quot;

**P, A,** d: &quot;I&#39;ve absorbed information before my diagnosis by a mixture of visuals and responding to things that other people have created&quot;

**P, A,** d &quot;I find my ears sometimes are listening down across the side round and my eyes are absorbing information around here, and I&#39;ll stop and realise I didn&#39;t even look around.&quot;

**P, A,** d &quot;Yes, yes, precisely!&quot;

**P, A,** d: &quot;…but you can&#39;t always stay indoors, you need to go outdoors, whether assisted or not, and to go to different places, and do different things, so I don&#39;t know because we&#39;re doing it sort of forward-looking in one direction only, and I don&#39;t know how else to describe it.&quot;

**P, A** , d: &quot;I wasn&#39;t even aware of sensory issues and what that meant, so I think there&#39;s this huge piece of education, and so it would be to share that aspect [knowledge about sensory differences]&quot;

**P, A** , d: &quot;[I would want to share] so people don&#39;t think, &#39;oh I just need to know if they have sensory issues to light or to sound&#39;. It&#39;s not quite like that, there&#39;s a whole other aspect&quot;

**P, A** , d: &quot;…we have a consultant doing work with people on this estate, and they&#39;ve done a wallpaper presentation of stick people that look frantic, when they put the other information across this wallpaper, I&#39;m screaming, &#39;please can you take out some of the wallpaper or reduce the stick figures or something&#39;, it&#39;s too busy for me to understand the text.&quot;

**P, A** , d: &quot;I know, or they have this image and then these words and then you spend your time going, &#39;how is that supposed to relate to this picture, and is there some other information I should be accessing?&#39;&quot;

**P** , i: &quot;[wearing headphones is the] kind of a habit really she&#39;s [autistic daughter] just got herself into. I think she likes to take out extraneous noise.&quot;

**P** , g: &quot;It&#39;s these sensory things [sensitivity to extraneous noise] that neurotypicals don&#39;t get - well, some do on some occasions but it&#39;s very hard to grasp&quot;

**A, P,** d: &quot;…the floor being slightly unbalanced, like the floor in my supermarket…I&#39;m known to stagger, as if I&#39;m slightly drunk, or if the floor&#39;s a little bit uneven, because I have vestibular issues.&quot;

**A** , d: &quot;…in hindsight I understand that that [sensory processing] was pretty much the cause of every issue that we had as a family, and I now understand that there are ways that I can deal with that in the future&quot;

**A** , d: &quot;…getting a free pair of beats headphones with my laptop has totally changed my life.&quot;

**A,** d: &quot;My problem is – well I&#39;ve got many, but is that I can be hugely variable from one day to the next&quot;

**A,** d, i: &quot;when I was growing up…I&#39;d have meltdowns in public areas…and my parents often wouldn&#39;t know what to do as well.&quot;

**A,** d: &quot;I worked in an office where there was a prayer room, and I kept having panic attacks a lot, and someone said to me … &#39;oh you can go to the prayer room&#39;, and it was a bit awkward because obviously it was mostly for people who need to go and pray 5 times a day, but it was useful to know that if I just thought… I feel that I&#39;m getting het up to the extent that I&#39;m going to do something or say something that I don&#39;t want to at work, I can just go to this place&quot;

**A,** d: &quot;…if every train station had a…a quiet room: not where someone can go and have a business conversation on their phone, but…an actual quiet room where you can appreciate if you&#39;re in it that some people might be trying to quieten down, rather than you have to be quiet like in a library, it&#39;s just a quiet space where people understand that the world can be a difficult place and we have a space, so that you&#39;re not on a platform or a concourse&quot;

**A,** d: &quot;I did have lots of noise sensitivities, not just in social situations, but I didn&#39;t like the fireworks going off around me, I used to really, really, really dread bonfire&#39;s night as well as new year&#39;s eve coming around every single year, because I knew that I would not only have to put fingers in my ears, but also even put some red headphones around me just to block out the noise – and some of the ways my parents would bear the brunt of it, I honestly thought like, &#39;oh, this bad thing&#39;, and the fear would also then catch up with me emotionally in order for me to have my train of thought of, you know, how to get over that particular fear. The way they would deal with it would be they would also write to the local MSP, member of the Scottish national parliament, to basically say, &#39;you know we need to ban these fireworks&#39;, just to deal with the sensitivity that I had. And then growing up I had, at the age of 13, when I was taken to my first fireworks display, I began to understand why people chose to celebrate with those items every year, if I can so loosely refer to it, and it&#39;s only because they have a particular reason to do so – and you validify what it really is. And I went to a particular fireworks display and when I could hear it going off, sure enough, my fear started to dramatically go away, albeit it just went away slightly.&quot;

## **Non-autistic responses to autistic people and autism**

**A** , d: &quot;…since I&#39;m &#39;high-functioning&#39; myself, my parents do tell me their stories about how they had to deal with me growing up, because I had lots of hearing sensitivities and I had lots of social problems.&quot;

**A** , d: &quot;…just for context, I was ridiculed from the moment I first set foot in school because I behaved in a &#39;not normal&#39; way, and I was dubbed bad, and none of it was ever in my control. But I wasn&#39;t diagnosed with autism until I left school.&quot;

**A** , d: &quot;I think that growing up thinking that I was constantly naughty meant that I was depressed by the age of 7&quot;

**A** , d: &quot;I feel like I minutely interrogate everything I think and feel, because I&#39;ve been made to feel strange for my whole life&quot;

**A** , d: &quot;…lots of neurotypical people…if someone was being terrible in an office, and maybe it really upset me, and I would go and speak to someone and they&#39;d be like, &#39;oh, they&#39;ve just been dumped by their girlfriend&#39;, it blew my mind – just sort of like, &#39;how could they let that affect how they interact with me as if I&#39;ve done something terrible?&#39;&quot;

**P, A,** d: &quot;I&#39;m a human library book and when I&#39;m being read as an autistic person, [people] say, &#39;Are you here to talk about autism?&#39;. I say, &#39;no, I&#39;m talking about me as an autistic person, and my experience of the world&#39;, and so they have to correct how they introduce me.&quot;

**P, A,** d: &quot;Neurotypical people often make me think, &#39;well how on earth am I supposed to follow that.&#39;&quot;

**P** , i: &quot;My wife always suspected [autistic daughter] had a bit [of autism]: she had a bit of experience I never had.&quot;

**P** , g: &#39;like most people I…knew nothing about it [autism]&quot;

**P** , g: &quot;he [autistic son] is 19 now, so it&#39;s been most of his life…it&#39;s been around all the time for us.&quot;

**P** , g: &quot;[Autism was] certainly not something I knew about, not something anybody knew anything about&quot;

**P** , d: &quot;…it&#39;s been a total learning curve. I&#39;ve been learning everything, finding out everything, finding every stage -&quot;

**P** , g: &quot;…when you&#39;re ignorant, you&#39;re ignorant… we&#39;re not malignantly ignorant, unfortunately we just are…&quot;

**P** , i: &quot;…she&#39;ll [autistic daughter] tell you about a lot of what she experienced at school…out and out prejudice really&quot;

**P** , d: &quot;…we do have these [strains to do with normativity] quite a lot…particularly when there&#39;s been a meltdown that one could predict…then you get a row afterwards&quot;

**P** , i: [About an autistic woman] &quot;…she&#39;s gone off to uni – she didn&#39;t last long in uni because other issues cropped up, like everything that&#39;s happened this year, combined with her ASD that messed it up for her.&quot;

**P** , i: &quot;…I&#39;m the parent of somebody&#39;s who&#39;s high-functioning, so that comes with its own pros and con&quot;

R, _T_, g: &quot; …this is quite a common dynamic whether someone&#39;s autistic or not, right, so there&#39;s a kind of a natural period of rebellion maybe…&quot;

R, _T_, d :&#39; my attitude to my parent&#39;s view of me has changed over time a lot, like my assessment of whether they do actually know what&#39;s best for me, and I think that&#39;s a kind of journey that many people are on&quot;

R, _T_, i: &quot;I think autism complicates it [the dynamic with parents] because I think it&#39;s been so misunderstood by society, and science before&quot;

**P** , d: &quot;it&#39;s been constant battles we never wanted to fight and never thought we would, but we&#39;ve had to.&quot;

**P** , d: &quot;Without going into the battles I&#39;m glad you said that&quot;

**P** , i &quot;If you&#39;ve got ASD you&#39;re a target for being bullied, I think we all know that, but one of my other daughters who was at the same school, she was being bullied on behalf of her sister who was being bullied.&quot;

**P** , i &quot;…we sent them to different schools just for that reason [because of bullying], because we have a different second name as well, so it&#39;s not even like &quot;Smith&quot; where you could be like, well he&#39;s not – people know straight away. But we chose different schools so he could be [name] and not just [A]&#39;s brother. So that he could be an individual and start without the teachers knowing about him being [A]&#39;s brother, and he could start with individuality, so yeah, it&#39;s a challenge&quot;.

**P,** g: &quot;I know people have been learning a lot about these non-aggressive or passive response methods… but it requires a very conscious effort for somebody to acquire those skills, because the whole thing is counterintuitive.&quot;
**A,** d: &quot;…stop telling me to get out of bed and ask me, &#39;would you like to get out of bed?&quot;
**P,** i: &quot;…whether that&#39;s [not wanting to get out of bed] an ASD thing or not I don&#39;t know&quot;

**P,** d: &quot;I&#39;ve got nothing better than my daughter to live for, so it&#39;s just as well I love all of her…I understand that autism, and all her co-occurring conditions, are an intrinsic part of who she is&quot;.

**A** , d: &quot;…the issue I&#39;ve always had is that because of my conditions that they weren&#39;t fully understood, I was ridiculed when I entered school as a &#39;bad child&#39;…my entire life the only people who haven&#39;t seen me as bad are my parents&quot;

**A** , d: &quot;…we&#39;ve got hundreds and hundreds of letters hidden around the house of me apologising every time I got in trouble, because I was so ashamed that I was being bad&quot;

**A** , d: &quot;I also talked in our group…about the effects on siblings as well…and it does go everywhere…and it doesn&#39;t just affect the person…it affects everybody around them, especially if something&#39;s not going in the way that society would want.&quot;

**P,** i: [Autistic daughter] frequently will say to us in a moment of frustration, &quot;as parents you say you love me, but you don&#39;t love that [autistic] part of me,&quot; and my response is usually something like, &quot;it&#39;s hard to do that in the moment&quot;, and this kind of thing, that autism is a building block within a person who has a condition and that it is invariably felt by people in a family as a negative thing, I mean it is not nice for a person with ASD to experience that.&quot;

**P** , g/i: &quot;people don&#39;t want meltdowns, but they happen, and unfortunately a neurotypical way of dealing with it is – well, you could say it is negative, but it is a gut reaction, and even with all of the awareness and training that I&#39;ve collected over the years…it&#39;s very difficult.&quot;

**A** , i: &quot;…my parents ended up having to learn it [guidance on dealing with meltdowns] from the units I attended…particularly in primary school, that look this is the ways that you&#39;ve got to [speak] to your child&quot;

**A,** d: &quot;you [parents] have got to say to…your [autistic] son or daughter, &#39;right, this is what we&#39;ve got to do today&#39;, and it&#39;s got some example, like, &quot;a moment from now – we&#39;re gonna do this this or that, and it&#39;s gonna be the next thing.&quot;

**A,** i: &quot;…I think a lot of the things that non-autistic people think autistic people do is rude, is because they&#39;re [non-autistic people] trained not to…say the truth.&quot;

**A,** d: &quot;…at the same time we need to try and say about society, if they want to learn about disability rights and the way we need to cope with things in society, we need to reach out to society in a way that says, &#39;we need you to understand our trains of thought&#39;, without then imposing any strains of political correctness on them at the same time.&quot;

**A,** g: &quot;…there&#39;s been a trend going around, and I see it especially in places like England, whereby if anyone were to be told, &#39;okay you&#39;re going to learn about disability rights today&#39;, or even with the same issue like minority rights or environment issues, the standard response would be, &#39;oh gosh, we&#39;re gonna get talked to, we&#39;re gonna have our hearts and our minds changed all the time&#39;, and I think it&#39;s really important that we cannot go into that particular realm of suspicion, because I&#39;ve been through the main teachings of how we get people to understand our concerns&quot;

**A,** d: &quot;I once had a problem that if someone at work wrote me an email that I thought was rude or whatever, I&#39;d just respond like whatever, and then it would be a problem, because I&#39;d said what I really thought – and what I learned was that you&#39;re not supposed to do that, you have to train yourself to be different.&quot;

**A** , i: &quot;maybe they [parents] had to let off some steam about it because, well who knows what could happen if the parent was told, &quot;well you&#39;re not allowed to say it&quot;…they&#39;ve [parents] therefore got to keep it within themselves&quot;…if they [parents] keep having to hold it back and hold it back and hold it back…the main problem that might develop from it is that this builds up and builds up like a bubble until something really triggers them to go over the edge and they implode one day, and they may end up really going over the edge and doing something really bad even to other people around them, or to their child itself – so that&#39;s the main point I ended up wanting to raise about it.&quot;

## **Code of Conduct**

**A, P** , d **:**&quot;…this is where laws are very important because there&#39;s nothing that can help the world go around more than to have a clear set of rules to say, &quot;actually, what you did was in breach of this&quot;…and then to be collaborators with people who are trying to contribute to the site, instead of being gatekeepers.

**A** , d: &quot;What…people tend to find in good taste and what they find in bad taste in general tends to be quite subjective&quot;

**A** , d: &quot;I … agree with all of the points that have been made around the subjective nature of a lot of these sorts of issues.&quot;

**A** , d: &quot;…there are certain things that will be obvious in terms of their intention and in terms of their harm, that can be easily dealt with, but a lot of this is very subjective.&quot;

**A** , d: &quot;I mean, honestly that&#39;s particularly an issue with autistic people, I&#39;ve got to say that&#39;s me in many situations, you know – we think our views are facts, and it&#39;s hard to take in other&#39;s opinions – I&#39;m not generalising though&quot;

**A** , d: &quot;…unfortunately there&#39;s a lot of things that we&#39;re being told nowadays that we can and cannot say, and of course the latter keeps expanding and expanding and expanding, which includes even the most harmless and pettiest of examples.:&quot;

**A** , d: &quot;How can we be sure that the things we do contribute to these sorts of platform…can actually be balanced enough to…say, &#39;we have enough to express ourselves?&#39;&quot;

**A** , d: &quot;…if somebody was to say something that you or I wouldn&#39;t like, then it&#39;s best to deal with it in a public debate, in an open space, rather than just trying to censor that particular thing – so there needs to be a clear balance struck out.&quot;

**A** , d: &quot;That makes me feel…super uncomfortable.&quot;

**A** , d: &quot;…in terms of the language people use and knowing whether things might be offensive to people…my job is a journalist, and I&#39;m an editor, and I&#39;ve edited a lot of people&#39;s opinion articles, and one of the things that I&#39;ve found most useful, especially when I&#39;m dealing with people who aren&#39;t writers but are writing about their experience, is to try and make sure people remember to write from their perspective, and that they&#39;re saying what happened to them and what they think, and I&#39;m trying not to make generalisations about people or groups of people, and that often helps people to say, &#39;this thing happened to me&#39;, and, &#39;here&#39;s how it was and here&#39;s how I felt&#39;, rather than, &#39;this group of people does this type of thing to people like me&#39;, which is…automatically much more confrontational even if it is essentially trying to tell the same story.&quot;

**A** , d: &quot;…have a way to really emphasise to people not to make generalisations, and that they&#39;re…completely allowed to say what happened to them and what they think about something but making sure that they take ownership of the pieces that they&#39;re using, not kind of broad-brushing over whole groups of people, which is when you tend to get issues where it&#39;s sort of offensive.&quot;

**P** , d: &quot;a code of conduct almost feels like a political or an academic kind of thing&quot;

**P** , i: &quot;One thing I question is, is code of conduct actually the right word or phrase to use… we&#39;ve got this whole thing about high functioning, low functioning autism, or whatever, and some people are gonna get it, and some people won&#39;t, so obviously a lot of things like that need to be looked at.

R, _T_, d: &quot;…having clear rules [is] the best way I can think of to resolve some of that ambiguity which results from different subjective views&quot;

R, _T_, d: &quot;Certainly, I&#39;m finding it quite complex…all the different balancing acts with all the different points of view.&quot;

R, _T_, d: &quot;…my feeling is, having to actually concretely design this in some way…probably there&#39;s no prefect solution for everyone, but... a reasonable balance.&quot;

**P** , g: [Emphasis on treating everyone as an individual] &quot;…everybody who&#39;s involved with people on the spectrum – we all know that the answer is to learn, and it&#39;s not easy, it&#39;s to learn how to treat each person as an individual, that&#39;s all we really need to do as human beings, and that would sort out all the problems in the world, wouldn&#39;t it? But we&#39;re talking about something much smaller…I&#39;m just wondering if that could maybe come in as a sort of, as an umbrella thought for this thing?&quot;

R, _T_, d &quot;I think that&#39;s a really great suggestion&quot;

R, _T_, d &quot;I think the AutAngels one [code of conduct] that I was using as a basis really emphasises that everyone is different, and that&#39;s a positive thing about this community&quot;

R, _T_, d &quot;…if you can take time to appreciate different people, and the different ways of being in the world and ways they like to express themselves, then that&#39;s useful.&quot;

**P** , g: &quot;It&#39;s easy to say this, isn&#39;t it&quot;

R, _T_, d &quot;Yeah, and hard to do – &quot;

**P** , g: &quot;…everyone has to deal with Donald Trump for 4 years, and…he&#39;s started this thing…He&#39;ll say to journalists, &quot;I don&#39;t like you and I don&#39;t believe a word you say&quot;, and obviously that has coloured a lot of opinions in many different areas – but…that&#39;s hopefully on the way out now…

R, _T_, d &quot;Yeah, I think it does take a lot more attention and effort than maybe it seems at first to carve out a space where that doesn&#39;t happen&quot;

**A,** g: &quot;you&#39;re never going to find the perfect middle ground, but you have to get as close as you possibly can and then try to review that as time goes on.&quot;

**A, P** , d: &quot;I think it&#39;s important about the advisory thing, about how to go about putting in posts, so for instance if the bit about reporting on behalf of other people was done by one or two of the moderators and co-produced or something, that might be better than it being written by the researcher describing, &#39;well that&#39;s what you&#39;ve got to do&#39;, so you know it&#39;s somebody autistic, or you know has a knowledge of how easy it is to just vent…and then they say, &#39;try not to&#39;, it would…carry more weight.&quot;

R, _T,_ d: &quot;I think is really interesting, if we&#39;re writing a code of conduct, how do we make sure that it&#39;s not – basically just discriminating against autistic people by being a kind of non-autistic view of what&#39;s appropriate?&quot;

**A** , d: &quot;Good question&quot;

R, _T,_ i: &quot;…a lot of people in previous discussion brought up that their sense of what was rude was different to what non-autistic people might judge as being rude&quot;

R, _T,_ i: &quot;…they were constantly thinking, &#39;I have to change my behaviour to make someone who&#39;s not autistic feel comfortable, and they&#39;re never changing their behaviour to make me feel comfortable&#39;

**A,** d: &quot;[if] somebody says something that you disagree with you can disagree with them in a civil way.&quot;

**P** , d: &quot;a code of conduct almost feels like a political or an academic kind of thing&quot;

**A,** d: &quot;I think that some of the values are really clear at the outset, that it isn&#39;t a place to vent…it is supposed to be truthful, but you should be thinking about what you&#39;re saying before you say it.&quot;

R, _T,_ i: &quot;…having autistic people write it was what I thought would be the most helpful thing.&quot;

## Feedback on existing code of conduct

**A** , d: &quot;…because I have epilepsy, I&#39;m a strong advocate for co-morbidity and I think it is brilliant that you are mentioning it straight out, because I find that on the other side neurology doesn&#39;t necessarily consider autism as much&quot;

**A, d** : &quot;I&#39;m not sure if autism is considered to be a neurological condition, but it is often tied to neurological conditions&quot;

**A, P** , d: &quot;…I think we just said with the behaviours part that you have to put &#39;placeism&#39;.&quot;

**A, d** : &quot;I mentioned to you briefly about the word &#39;neurology&#39;, and I was just wondering if you or any other...moderators on here would be able to clarify specifically what they meant by that?&quot;

**A** , d: &quot;I think just working out specifically what is meant by that term [&#39;neurology&#39;] and working out a more direct way of explaining that [would help].

**A** , d: &quot;…my first question as someone with a co-morbid neurological condition is that, in the list of self-identifying factors, what is specifically meant by neurology?&quot;

**A** , d: &quot;I really do love that neurological differences is emphasised as from the other side of it, autism is often totally ignored in the neurology world, so yeah, to me that was interesting, but unspecific.&quot;

**P, A** , d: &quot;…when I read that paragraph with the four social rules, I found it really, I think, condescending in a way – &quot;

**P, A** , d: &quot;Yeah, I didn&#39;t like those [the four social rules] at all&quot;

**P, A** , d: &quot;…I saw &#39;no feigning surprise&#39;, and I thought, &quot;Huh! I&#39;m an autistic person, I have to act all the time about being surprised, or being happy.&quot;

**P, A** , d: &quot;[It] does feel a bit, I don&#39;t know, condescending to have this, &#39;no feigning surprise&#39; when actually autistic people have to mask in order to fit in&quot;

**P, A** , d: &quot;It [the &#39;no feigning surprise rule] wasn&#39;t mentioned that way, and it was about being condescending to others.&quot;

**P, A** , d: &quot;I&#39;m not an alien in all my social conversations, so I don&#39;t automatically go through all these variations, so to see it written out like that, I thought, &#39;why do we have to do that&#39;, and I just found that personally confusing…the idea that there&#39;s social principles&quot;

**P, A** , d: &quot;I struggle with the fact that…autism is a social communication disorder, so…using words like &#39;social principles&#39; makes me feel like you have to pass through…some kind of judgement barrier in order to do stuff.&quot;

**P, A** , d: &quot;Yeah, I think that, because I think especially when you go into the four social rules there&#39;s a whole block of writing about, it&#39;s almost like, &#39;Oh, because you&#39;ve got social communication difficulties, we&#39;re going to tell you how to be polite, and I think that could be worded in a more constructive-criticism way.&quot;

**P, A** , d: &quot;These [the four social rules] are like good illustrations, asking autistic people for things.&quot;

**P, A** , d: &quot;[It&#39;s] just the tone – I mean, I&#39;m quite aware I need a nudge now and then…it&#39;s always helpful to remind me now and then not to speak over people too much. But I think there&#39;s a less condescending way of doing that&quot;

**P, A** , d: &quot;I&#39;m not sure [about] the 5th bullet of expected behaviour… this [platform] isn&#39;t just for non-autistic people, this is for everyone…it just seems weird the way it&#39;s drafted it&#39;s just a bit limited. I think it needs to be broader in scope.&quot;

**P, A** , d: &quot;Yeah, so I guess the way I took that [the 5th bullet of expected behaviour] is kind of, when you&#39;re talking about your experiences, don&#39;t be like, &#39;this autistic person in the cinema kept talking and rocking, and it was really distracting&#39;.&quot;

**P, A** , d: &quot;…if this [code of conduct] is focussed foremost on autistic people sharing their experiences, then this [the 5th bullet point] is a bit of a funny bullet.&quot;

**P, A** , d: &quot;I think we …need to…word it [the 5th bullet point] differently&quot;

**P, A** , d: [Reword the 5th bullet point], &quot;to be more inclusive&quot;

**P, A** , d: &quot;…the first bullet in 2.2… has got that language, &#39;if they don&#39;t feel positive about their autism&quot;

**P** , d: &quot;…the language being used, so wondering if you actually discussed that in your groups?&quot;

**A, P** , d: &quot;…in our breakout room we raised points on the language generally as well, things like, it&#39;s all well and good people on the autistic spectrum having social difficulties, but it did feel quite condescending when you went and launched into, &quot;don&#39;t feign surprise&quot;

**A,** d: &quot;I didn&#39;t even know what feigned means, for one&quot;

**A, P,** d: &quot;…before I went into what you [researchers] were trying to say, and the thought behind it, I thought, &quot;well, you spend your life putting on an act that&#39;s socially appropriate, and now you&#39;re trying to tell us not to feign being surprised: but maybe we&#39;re actually supposed to be surprised and then we have to go and do it&quot;, so I&#39;ve fed that back, and some of the language I thought was a little bit condescending in my view.&quot;

R, _T,_ d: &quot;…there&#39;s quite a lot of things that are quite easy fixes
 R, _T,_ d: &quot;we can fix… the phrasing of the guidelines for the platform&quot;
 R, _T,_ d: &quot;…we can use a standard sort of voice&quot;
 R, _T,_ d: &quot;…I hadn&#39;t read that blog post about the social norms in a long time…I haven&#39;t read it in probably two years, and now that you say, it&#39;s absolutely full of idioms…and that is unnecessarily complicated for the points that we want to make, so…that&#39;s the key thing.&quot;

## Tone

**A** , d: &quot;I&#39;ve had this issue with my editorial board at [organisation], because we&#39;re trying to make a blog site that is fully accessible to everybody, in aged 16-25, that doesn&#39;t sound patronising, and it is going to be very difficult to find that middle ground&quot;
**A** , d: &quot;…a tone of voice, as well as a code of conduct, is essential for any of these kind of platforms&quot;
 R, _T,_ d: &quot;I just wanted to circle back to: [A], you made a point about a tone of voice – so there&#39;s a code of conduct and then there&#39;s a tone of voice for the platform – and I&#39;m curious to have us sort of dig into that a little bit more, because I think I don&#39;t totally understand what you mean by tone of voice for the platform.&quot;
**A,** d: &quot;I mean, this is not a platform that you&#39;re going to be posting on, it&#39;s different when it&#39;s a platform that the organisation is posting on.&quot;
**A** , d: &quot;…coming up with a set of rules for yourself, I mean a set of rules how it would be worded on the site, and a set off rules if somebody would get a response from a moderator, to say this is inappropriate, just making sure there is a continual, there is a consistency across all the language that is used on the platform itself, and making sure that that is the right way of saying things&quot;
**A** : &quot;so it&#39;s not too strict but it&#39;s not too simple; it&#39;s not too complicated to understand but it&#39;s not too patronising…finding that middle ground and making sure everything written on the site follows that same pattern, essentially&quot;

**P** , d: &quot;…it does make sense, yeah, I mean all these things are true so to speak&quot;

## Metaphorical/non-literal language

**A, P** , d: &quot;…to me there was some language in there [about the four social rules] that wasn&#39;t necessarily understandable to a lot of autistic people, including a lot of idioms, indeed there were two in one explanation. The section is literally called &quot;back street driving&quot;, and then the second section uses the phrase &quot;too many cooks&quot;, and…if you&#39;re using that kind of language to explain something to autistic people it&#39;s probably it&#39;s not going to work so well.&quot;

**A, P** , d: &quot;I think most people know: do most people not know about that [the use of idioms]? It&#39;s just like learning another piece of a language, that we&#39;ve done in our lifetimes?&quot;

**A,** d: &quot;I know friends of mine only take everything literally. There are certain idioms that, although I knew what they meant, I found them bizarre growing up; like the idea of flying colours - colours don&#39;t fly&quot;

**A, P** , d: &quot;…fair point, we should demonstrate that we are autistic-aware by not throwing in those things [idioms].&#39;

###

## Negative language

**A,** g: &quot;…it literally could just be that the person does not know how to articulate what they were going to say, and it ends up inappropriate, and that just would be discriminatory to remove that post just because they&#39;re struggling&quot;

**A** , d: &quot;using…swearwords, however petty, like &#39;bloody meltdown&#39; or whatever, it&#39;s not helpful to the research&quot;

**A,** d: &quot;I&#39;ll admit I probably swear more, I do swear more, than I…sometimes I don&#39;t even know that I&#39;m doing it, so I can accidentally say a word and not know&quot;

**A** , g: &quot;…in society there is not such a massive understanding of why someone – a child or an adult - would have a meltdown – and using language that makes it seem like an unreasonable and bad thing that they&#39;ve done is really unhelpful, when actually we know that the world has not been designed for autistic people&quot;

**P, A** , d: &quot;I think that you can say that non-autistic people must try not to complain or criticise autistic people&quot;

**P, A** , d: &quot;We&#39;re going to keep facilitating stigma if that&#39;s the way we&#39;re going to treat [autism]: &#39;this autism, this bit of my autism means this for me&#39;, no, &#39;this is who I am&#39;, so I think we need to have (R) fostering the right language as well…it&#39;s autistic people&#39;s experiences, not people&#39;s experiences of their autism.&quot;

**A,** R, _A,_ i: &quot;I imagine with (R) it was probably just a bad phrasing, she&#39;s normally very sensitive to that…&quot;

R, _T_, d: &quot;…one way to do that [deal with swearwords in posts] would be to have very explicitly somewhere in the code of conduct: &quot;you can express yourself with swearwords in a frustrated way, in an angry way, if that is your experience&quot;

**P** , d: &quot;I use that word, that mild swearing deliberately because I think it does emphasise a point, and we don&#39;t want to censor, and we don&#39;t want to frustrate people who think this could be a much-needed opening&quot;

**P** , d: &quot;I&#39;m wondering if this could be an age thing, this thing about using passionate language&quot;

**P** , i: &quot;Young people [use language differently] with even the abbreviations they&#39;re using texting or WhatsApping all the time, like the initials WTF, for example&quot;

**P** , d: &quot;…when I first got an email from somebody with &quot;WTF…I messaged back and said, this is a business thing…this is not appropriate&quot;, but then that&#39;s because I&#39;m…a 60-year-old person, this would have been somebody a lot younger.

**P** , g: &quot;…whether or not you have ASD, there are some people who will be offended for one reason or another, and others wouldn&#39;t be&quot;

**A** , d: &quot;…when someone ended up using that term [bloody], when we saw the comments there, I controversially did not think it was therefore exclusive of autistic people as an entire collective, but really it was an opinion-share from them, as individuals, in…the individual case of dealing with their child&quot;

**A** , d: &quot;...the main issue was we were talking about what language they can and can&#39;t use in these sorts of forums.&quot;

**A** , d: &quot;…it was brought up earlier in the conversation that the word, &#39;bloody&#39;, was used by one of the parents, and they say – &#39;oh it&#39;s ruined my day.&#39;…in a way it does help to understand their view of the situation.&quot;

**A,** i: &quot;…maybe if people feel they can&#39;t express themselves because they can&#39;t use that kind of word, for example, then that might mean that we might just lose a whole chunk of people, and they might be the people who don&#39;t have the opportunities for education – I don&#39;t know, I might be making totally massive assumptions.&quot;

## Emotions

**A** , d: &quot;It [the code of conduct] does say that we have the right to express our anger and frustration about things, but I feel that there are probably things that would come up, that we would try to express our anger and frustrations about that would probably personally be no doubt flagged up, and therefore probably removed in the process. So how can we be sure of that?&quot;

**A** , d: &quot;if you&#39;re saying, &#39;Oh I&#39;m the non-autistic person who&#39;s meant to be able to regulate my emotions&#39;, …you can regulate not using swearwords to describe in public your experiences of your child.&quot;

**A** , d: &quot;I imagine it would be helpful for the researchers, the scientists, to see the emotion&quot;

**A** , d: &quot;…people have just no idea how rude they are by their emotions, they don&#39;t interrogate what they think and do, and that&#39;s a real problem with something like this, is people think their subjective view is objective fact.&quot;

**A** , i: &quot;…now the way I see it is…a lot of people, especially neurotypical people, are so emotional all the time and have no comprehension that their emotions are driving them&quot;

**A** , g: &quot;… in a practical sense it&#39;s going to be quite difficult to police that: loads of people are accidentally going to let loads of their emotions about something go in [to their story]&quot;

**P, A** , d: &quot;You can actually post and be fairly neutral&quot;

**P** , g: &quot;…it&#39;s not about how we would be able to report it and reuse it [an experience of a parent&#39;s emotion], and the advice wouldn&#39;t be able to be used without the advice of the parent, which wouldn&#39;t help the forum or the feedback, so that might be a way to post without the emotion and the emotive side of it.&quot;

R, _T_, g: &quot;…the guidance to go in the code of conduct would be, &#39;don&#39;t add your own emotion to this platform?&#39;&quot;

R, _T_, d: &quot;…I think they [parents of autistic people] can say,&#39; this is how this person was in this environment&#39;, but not how it made me [the parent] feel when they [the autistic person] reacted like that.&quot;

**P,** d: &quot;I think that&#39;s something that has to be the facts [about the experience being shared by a non-autistic person], instead of emotion in it…when it&#39;s somebody else [other than the autistic person] who&#39;s writing it.&quot;

**A, P** , d: &quot;…it&#39;s also going to be positioned as a means to share statement of facts: &#39;this happened to me, and I don&#39;t understand why&#39;, or a carer or parent saying, &#39;this was a situation that happened to a person I was caring for, and I don&#39;t understand why&#39;.

**A,** d: &quot;…I&#39;m a journalist, I work with words every day, and I think there is such a difference between someone who&#39;s twisted themselves into a knot of fury about what&#39;s going on, and is just generalising and lashing out and all of this, and someone who&#39;s just used what they think is an obvious, truthful description of something but they didn&#39;t have vitriol behind it.&quot;

**A** , d: &quot;I appreciate this is a very tricky thing, but like I&#39;ve edited a lot of people&#39;s first-person opinion pieces, and what I always try to edit out is those words where you might be like, fuming and sticky sweaty hands because you so want to violently tell everyone what you think, and the people who are just trying to describe it and have accidentally slipped in to a thing where it&#39;s like, &#39;that isn&#39;t how we refer to those people by the way&#39;.&quot;

**A,** d: &quot;…what someone said to me is, &#39;if it feels really good in a mean way to write, you probably shouldn&#39;t include it&#39;, and I think that&#39;s a really good test case here, like if you went to read it out in front of people who want to give you a job, would you say it?&quot;

**A,** d: &quot;…autistic people might say things that other people might think are rude, but I think it&#39;s not a different world – whereas this thing where you&#39;re trying to inflict harm with your words compared to when you&#39;re just trying to express yourself, I think that&#39;s different.&quot;

**A,** d: &quot;I wonder if it would be good to maybe be really obvious…maybe if you&#39;re really angry about something, offer us a solution, like &#39;what would have made it better?&#39;&quot;

**P,** g: &quot;…what we discussed was how to report without the emotion in it – so you&#39;re actually reporting about something&quot;

**P** , d: &quot;I think the emotion would be really the problem for me, because I think situations can be emotive, but I think that&#39;s outside of the how that thing happened and how that made you feel has no effect on what it was that happened and the sensory issues at the time, that was your emotion about the situation, so for research purposes, I think that needs to be stipulated from the start, that that shouldn&#39;t be in it – how it made the parent or the person reporting it feel.&quot;

**A,** d, g: &quot;…at one point when I was younger, I used to think, &#39;yes, getting people to be borderline forced into it would be one way&#39;, but I learned at the same time, you can&#39;t police people&#39;s emotions and thereby how they react to things.&quot;

## **Speaking on behalf of others/supporting others to speak**

**A, P** , d: &quot;[on] that point about speaking for others, and when parents or carers do that…I think it needs to be very clear, that&#39;s your experience of a person who had potentially a sensory thing going on, and not to put any assumptions onto that person&quot;
**A, P** , d: &quot;…the example you gave in one of your quotes, if an autistic person said their parents may have said they had a meltdown and the autistic person goes, &#39;they may have had an issue with the flickering lights&quot;, go to the autistic person and go, &quot;how do you know it was the flickering lights?&quot;: it could be build up from the last three days, that the last final straw was a vestibular issue dealing with a wonky floor, not the visual image of the light&quot;

**A,** d: &quot;…to change it back to this separation, when I was thinking about…conflicts…between parents using the site, and…actual autistic people, I was thinking…which side would be more concerned about something they wrote being seen by the other&quot;
**A,** d: &quot;I think I probably say most of what I feel to my parents, but I doubt they say it all to me&quot;
**A,** i &quot;…it&#39;s whether the parents would feel more upset about whether their children are reading something they&#39;d written, or if the children would be upset if they saw something they&#39;d written…so that is I think why it does seem sort of essential to have two segregations&quot;

**A, P** , d: &quot;…I&#39;ve seen on social media, parents have a lot more issue about when autistic people write about their experiences as children, they usually have a whole host of issues…and they then try to silence all those who can&#39;t speak.&quot;
**A, P** , d: &quot;…my concern about hearing all that is that for those who have co-occurring conditions, and find life really tough, and learning disabilities and all the rest, it can&#39;t be much of those kids they [parents] can love then, is there, if they don&#39;t love the autistic part of them too.&quot;
**A, P,** g: &quot;…the autistic person might not know unless they have pointed to the lights and articulated it, so I think it&#39;s an important point to make it clear that that&#39;s your interpretation and it could be this or that, and if that&#39;s your input then it could be created, unless that individual was in some way communicated with, and that is not just an ability to speak issue is it, it&#39;s about understanding your own issues and being self-aware.&quot;

**A** , **P** , d &quot;…I don&#39;t know how we&#39;re all responding so linearly because we&#39;re assuming the parents of other people who are non-verbal want their experiences to be entered in the same way as everybody is able - to use the &quot;normal&quot; inverted commas, thing.&quot;

**A, P** , d: &quot;…one thing that was said in the presentation that – and we did discuss this in the group, that I didn&#39;t get from the bits we scanned earlier, was that it was &#39;autistic first&#39;, but &#39;welcoming and inclusive for others&#39;, and I&#39;m thinking in reality how these sorts of things happen is the autistic people can sort of get drowned out by the volume of people who want to speak on their behalf&quot;

**A** , d: &quot;…in terms of the language people use and knowing whether things might be offensive to people…my job is a journalist, and I&#39;m an editor, and I&#39;ve edited a lot of people&#39;s opinion articles, and one of the things that I&#39;ve found most useful, especially when I&#39;m dealing with people who aren&#39;t writers but are writing about their experience, is to try and make sure people remember to write from their perspective, and that they&#39;re saying what happened to them and what they think, and I&#39;m trying not to make generalisations about people or groups of people, and that often helps people to say, &#39;this thing happened to me&#39;, and, &#39;here&#39;s how it was and here&#39;s how I felt&#39;, rather than, &#39;this group of people does this type of thing to people like me&#39;, which is…automatically much more confrontational even if it is essentially trying to tell the same story.&quot;

**A,** d: &quot;…have a way to really emphasise to people not to make generalisations, and that they&#39;re…completely allowed to say what happened to them and what they think about something but making sure that they take ownership of the pieces that they&#39;re using, not kind of broad-brushing over whole groups of people, which is when you tend to get issues where it&#39;s sort of offensive.&quot;

**A** , d &quot;…what we should be working towards is making sure that those situations [which cause meltdowns] aren&#39;t stressful for lots of people… even non-autistic people, and to describe how they affected someone when it really upset them, in a way that blames them rather than is looking towards to a future in which that situation could have been better for them is…totally missing the point of the exercise, and…further dehumanising a difficult situation this person experiences&quot;

R, _T,_ d: &quot;Thank you so much [A] I think that&#39;s really beautifully put and I&#39;m really glad we&#39;ve captured that.&quot;

R, _T,_ d: &quot;I think there&#39;s a distinction between – and actually, [A], I&#39;m thinking about what you said this morning – there&#39;s a distinction between saying, &#39;I am frustrated at myself; I had a meltdown and I was annoyed about it – it was difficult for me&#39;. There&#39;s a difference to saying, &#39;this is how I felt, and I am sharing my experience&#39;, vs. somebody else sharing the experience.&quot;

**A** , d: &quot;for me and how I understand scientific research… if that&#39;s for research it should be really clear that that&#39;s people&#39;s perspective, and whatever the difficulties of the research are, that means that you didn&#39;t manage to access the real source material.&quot;

**A** , d: &#39;…so long as it is flagged that the person who wrote this is not the person that they say they&#39;re speaking for, then it ought to be possible to have research that understands that

limitation.&quot;

**A** , d: &quot;…in some cases there will have to be a degree of facilitation to allow that to happen [someone who is non-verbal or having non-verbal needs using the platform], for a parent or carer, whether that&#39;s just to arrange a time and place to do that, or to make sure the correct functionality is in place.&quot;

**A** , d: &quot;Parents, in my opinion, should be allowed to actually say even their deepest frustrations about how they seem to be dealing with things, particularly about how their children have meltdowns and things, because I&#39;ve had that happen to me before, in certain situations in public...but to try and therefore claim that somehow if they start using certain pejorative language like, &quot;bloody&quot;, and all this, somehow excludes autistic people including myself, somehow I find that to be…false actually, because if it was really inclusionary they would be making it really clear about what they actually think of us…&quot;

**A** , d: &quot;I don&#39;t think it&#39;s a matter of being exclusionary as a whole&quot;

**A** , d: &quot;…there&#39;s this slightly separate issue – I don&#39;t know if people agree with that or not, but it&#39;s around… parents and guardians uploading their experiences onto the platform, and how that&#39;s done in a sensitive way – it seems to need more discussion at the moment.&quot;

**A** , d: &#39;And on that second point I think that&#39;s a really tricky question, because obviously you want the platform to…be as truthful and accurate as possible for research purposes, but I would totally reiterate the point about it not being a place to – certainly not encouraging -venting, and I think it&#39;s a very, very tricky question about how you do that and how you balance those needs. I don&#39;t have any answers to be honest, but I totally get all the points that have been raised.&quot;

**A** , d: &quot;…thinking about it from that perspective [informing researchers], the idea of my parent potentially writing something about me potentially becomes less disturbing for me.&quot;

**A** , d: &quot;…unless we&#39;re specifically wanting to collect information…also directly from parents directly about their experiences, you know that example about [A] was perfect, because the first one was, &#39;this upset [A] because [A] got upset and that happened before and [A] doesn&#39;t like that&#39;, in comparison to, &#39;this happened which made me feel this which made me do that&#39;.&quot;

**P, A** , d: [autistic parents of autistic people and support workers posting] &quot;That&#39;s the vehicle for positive inclusion&quot;

**P, A** , d &quot;…only when we got him [autistic son] mind-mapping and putting his own things forward, right in the middle of everything, did things start to work, and I still want to explore that, so if we just say that share stories, we&#39;re doing it in the exact same way, it&#39;s just another person sharing on behalf of someone else…I don&#39;t know…&quot;

**P, A** , d &quot;No, I don&#39;t think we should [share on behalf of someone else].&quot;

**P, A** , d &quot;I think we have to be clear that this is either the views of the individual that&#39;s been helped to communicate that, or it&#39;s not.&quot;

**P, A** , d &quot;…my concern is that we are as a society so far away from doing this meaningfully, or knowing how to do this meaningly – &quot;

**P, A** , i: &quot;I would say that my son&#39;s PA – if my son has a problem communicating, that his PA could sum up things better than I possibly could…even though I probably spend more time on the planet with my son. But my PA&#39;s not emotionally invested, and sees things clearer when he sees him not doing something, not being able to say what he thinks.&quot;

**P, A** , g: &quot;…there are different tiers even within support workers, so we&#39;re saying parents, but that&#39;s probably also supposed to be support workers or people working with autistic people, and so the definition between being a parent and a support worker, that also needs to be defined.&quot;

**P, A** , d &quot;…you would have to have a different sort of moderation and a different sort of help for that moderation [moderating reporting about others].&quot;

**P, A** , i: &quot;I can see me reading him [my son] something&quot;

**P, A** , d: &quot;I don&#39;t think I can see me ever doing it [share an experience] on his [my son&#39;s] behalf&quot;

**P, A** , i &quot;…so far everything has been virtual but he&#39;s [my son is] already so hyped up and anxious about actually entering [something into the platform], and I feel that on the day that he actually does there&#39;ll be this huge knock-on effect that he&#39;ll want to talk about&quot;

**P, A** , i: &quot;I think he [my son] might feel better if it does go towards some research, but he may be so upset about it that he can&#39;t do it totally by himself, so I&#39;d work alongside him, but I don&#39;t think I could do it for him because he&#39;s at that stage now after a lot of mentoring and help that he&#39;d just want to shoot me and attack me for doing it wrong.&quot;

**P, A** , d: &quot;There needs to be clear guidelines&quot;

**P, A,** d, g: &quot;…too often, the way the world is, if somebody has a great difficulty communicating then their parents might jump in and communicate for them, and their support worker will communicate for them, rather than… facilitating, taking resource into hearing what they have actually got to say, and exploring their feelings about things&quot;

**P, A,** d, g: &quot;The real version&quot; [what the person with difficulty communicating has actually got to say]

**P, A,** d, i: &quot;I&#39;m lucky my son can kind of do postings himself now… he was nervous about posting&quot;

**P, A** , d, i: &quot;Other people, they&#39;re not so used to it [posting online], so they&#39;d rely on us as autistic parents or support workers to put things in for them&quot;

**P, A** , d: &quot;I think some of the discussion is not that targeted&quot;

**P, A,** d: &quot;Yes, we need parents&#39; and carers&#39; perspectives, because that&#39;s to do with their experience of what&#39;s happening, because they are the ones who may need to provide support, but there&#39;s guidelines on how that needs to be done&quot;

**P, A,** d: &quot;…there&#39;s a different discussion when you&#39;re looking at someone inputting on behalf of the views of someone else, or from their experience – so there&#39;s two things here that we&#39;re getting a bit conflated.&quot;

**P, A,** d: &quot;…my short experience of doing that bit [communicating] on the part of my son, I was never satisfied with what I read back or what I saw happen. I just knew that we hadn&#39;t got it right…&quot;

**P, A,** d: &quot;…it&#39;s not okay for parents to say, &#39;oh my child had a meltdown, and it was tricky for me in the supermarket&#39;, but they can say the flickering lights bothered them. Well, I will say - actually, unless they&#39;ve told you it&#39;s a flickering light, or communicated that, you can&#39;t assume it&#39;s the flickering lights&quot;

**P, A,** d: &quot;…the second part of the bitly thing [the platform wireframe] says, &#39;what would have made things better?&#39; Well, if the parents say what they&#39;d do better…that is trying to climb into one&#39;s head that you can&#39;t possibly do, because you don&#39;t know what could have made it better [for them].&quot;

**P, A,** d: &quot;…you don&#39;t know it&#39;s the flickering lights even – it&#39;s too many assumptions always made, and this is the issue…it becomes more harmful to put words and make assumptions like this, even if it&#39;s from the inside-out view – but it&#39;s not the inside-out view is it? It&#39;s what the other person&#39;s view is, and what their idea is – it could simply be unaddressed medical pain, right, it could simply be the vestibular issues of swirling that may be caused by noise…&quot;

**A,** R, _A_, d: &quot;…it sounds having that boundary between what the autistic people put forward, and what parents are…assuming on behalf of their child – how would you moderate that boundary, because it seems to be quite a blurred line?&quot;

**P, A** , g: &quot;…it may be that the parent believes they know their child better than anyone else, but that doesn&#39;t mean they know their child, or they know why this has happened…they&#39;re still making assumptions…they may know them more because they live with them, but they may not understand the issue.&quot;

**P, A** , d: &quot;It may [the parent&#39;s report of an autistic person&#39;s experience] be more likely to be correct than coming from anyone else, but it may still not be the right thing.&quot;

**P, A** , d: &quot;I think you have to be clear – if you are assuming, based on your best understanding, that this is the case, then please express this in your writing.&quot;

R, _T_, i: &quot;It&#39;s so interesting, the different perspectives on this one [sharing on behalf of others], because there were some people [in focus groups] who were saying, basically, &#39;I would be happy about parents talking about their own experience, but not talking about an autistic person&#39;s experience, because then they&#39;re talking over someone else&#39;, whereas I think what you&#39;re saying is that you would be happy them supporting someone else to talk about their experience.&quot;

**P** , d: Yes, as long as they&#39;re aware of that&#39;s what&#39;s happening [someone else is supporting them to enter the autistic person&#39;s experience]

**P** , d: &quot;…it&#39;s got to be that person&#39;s voice [the autistic person], it can&#39;t come from somebody else&#39;s opinion, I think that&#39;s really important&quot;

R, _T_, i: &quot;…what I&#39;m getting from this discussion is the importance of emphasising supporting someone else to express themselves, rather expressing something on their behalf&quot;,

**P** , g: &quot;…not everyone has a supportive family and a network of how&quot;

**P** , i: &quot;[Autistic daughter] is a very good spokesperson on her own behalf&quot;

R, _T_, i: &quot;There is a group of parents of those who can&#39;t really express themselves so easily, who would want to say maybe about their child&#39;s experience rather than about their own&quot;

R, _T_, i: &quot;some autistic people feel quite…I guess skeptical about parents&#39; ability to speak about autistic people&#39;s experiences&quot;

R, _T_, i: &quot;A lot of parents feel quite passionately that they do have something valuable to say&quot;

R, _T_, i &quot;…a lot of autistic people as well say that they [parents] have a lot of value to bring&quot;

R, _T_, d: What guidelines would you put for someone sharing an experience on behalf of someone else?&quot;

**P,** g **:**&quot;We&#39;re aware and we can be sympathetic, but a sad, hard fact is we&#39;re not in the mind of our own child&quot;

**P** , d: &quot;The only thing I would feel really uncomfortable with would be parents telling something on behalf of their children or telling their story&quot;

**P** , i: &quot;I know my [autistic] son would hate [me telling his story] because that&#39;s [his] story, so I don&#39;t it&#39;s my place to be able to comment.&quot;

**P** , i: &quot;I think if he [autistic son] saw things like that [people talking about the experiences of autistic people on their behalf], that would probably make him not want to use that [the platform&quot;

**P** , i &quot;Having said that, that comment about the positive and the negative that, &quot;[A] had a blooming meltdown again&quot; was a really good point, and hands up I&#39;ve never managed to be consistently positive about the situation.&quot;

R, _T_, d: &quot;What do you both think about issues of inferring what might be going on for somebody who&#39;s autistic, internally?&quot;

**P** , g: &quot;…a lot of people do have fantastic relationships with their autistic family, and they are the people who live with them every day and see their reactions, but…it is their presumption or assumption of that situation, but if they see it over and over and over again, they can say, &#39;in this situation numerous times this has happened&#39;.

**P** , d: &quot;…It&#39;s about the wording isn&#39;t it, it&#39;s about how you word that, not saying &#39;I know what they were thinking&#39;, but saying, &#39;in this situation they acted like this&#39;. I know that&#39;s hard.&quot;

**P** , i: &quot;…sharing to some young people… can be horrendous with their families, it could be something they don&#39;t want them to know of, and having to have their families to maybe do it for them might be another reason why they might not access it, while if they had someone who was maybe going to be able to do it for them, they may use that instead.&quot;

**P** , i: &quot;…we all think of our families as partners but I&#39;m also aware there&#39;s a lot of young people who do not have support at all and don&#39;t have that family network, who still need support externally, because that&#39;s where they&#39;re able to get it.&quot;

R, _T_, i: &quot;…relying on families to be benign isn&#39;t always the case actually&quot;

**P** , i: &quot;…I&#39;m in a youth charity at the moment, so I see a lot of young people where it&#39;s just not accepted to be anything apart from what they think of as normal. So young people couldn&#39;t go to peer groups or parents. It just wouldn&#39;t be seen at all to be accepted, and it&#39;s hard and they just will not tell people at all, so they just need to have another outlet somewhere.&quot;

R, _T_, i: &quot;…I could see that if you spend your life living with, supporting, caring for, or there&#39;s someone autistic that you care about thet you&#39;ve spent a lot of your life with, then that&#39;s going to give you a perspective that&#39;s a lot more than an average person…it&#39;s going to be different to their own perspective but it seems still valuable&quot;

**P** , i: &quot;…I thought it was really interesting the slide where the parent can post the experience of the person, so nothing personal for them, so that sort of changed my mind a bit, because obviously my son is verbal and very able to explain himself, but if he wasn&#39;t I think that would maybe be one of the guidelines that parents are able to post, but it would be literally about an experience, not… how they felt about the experience at all, and they would still be able to input into it without their personal experience of the situation – maybe saying, &#39;we went here and this caused this&#39; without any feeling, and that may be something that would need to be moderated, which would get that side across, but without the personal side…&quot;

R, _T_, i: &quot;…being able to recognise or think about your experience and express it in some form, in some situations it seems that the easiest route to that would be to have a parent support their child to do it, or even just upload a video or something like that, not inferring anything or making some kind of judgement – they&#39;re just showing something.&quot;

**P** , i: &quot;…that feeling of…a young person who&#39;s maybe struggling still having to rely on a parent, they still might not want a parent to see their artwork, or whatever they&#39;ve made.&quot;

**P** , i: &quot;It might [the experience an autistic person wants to share] be something they just really don&#39;t want their parents to know about.&quot;

**P** , i: &quot;…[have] a more advanced user [of the platform] who is able to upload or do that for them [enter an experience on behalf of an autistic person].&quot;

**P** , d: &quot;If someone&#39;s non-verbal, or whoever is posting an experience on behalf of them it&#39;s more the situation, not [how] they interpret it, so &#39;this is what happened&#39;, and, &#39;this is how they felt&#39;, so even if it&#39;s just the facts of what happened in that event, instead of them trying to interpret that, I think that&#39;s maybe something that is stuck in it from the start.&quot;

**P** , d: &quot;I don&#39;t think that&#39;s [alongside autistic people&#39;s experiences on the platform] the right place [for parents to get support], because I do think they need to be separate for me.&quot;

**P** , i: &quot;I think sadly that [having parents&#39; experiences alongside autistic people&#39;s experiences] would put young people off wanting to be involved, especially if they don&#39;t have good relationships with their parents, or they feel judged.

**P** , i: &quot;They [autistic people] might feel that they&#39;re going to be judged in that environment [in which parents share experiences], so it might stop people using it.&quot;

**P** , d: &#39;I know my story …I don&#39;t think this [platform] is the right place for that&quot;

**P** , d: &quot;I think seeing things posted [about autistic people by others] … I don&#39;t think they would work together the two of them, I think there&#39;s a separate place for it.&quot;

**P** , g: Parents of autistic people wanting to comment about the autistic person&#39;s experience shouldn&#39;t be allowed to use the platform, &quot;unless it was a totally different part of the platform, unless it was separate, because it is a completely different thing: it&#39;s their representation of the young person, it&#39;s not that person&#39;s identity&quot;.

**P** , d: &quot;for me I don&#39;t think [parents&#39; comments about experiences] should be in the same places where my [autistic] son could go and say those things, because that&#39;s him saying it, and his feelings, whereas that is their representation of someone&#39;s feelings&quot;

**P** , d: &quot;There is a place for it [parents to share about their autistic children&#39;s experiences], but I don&#39;t think it would be there [the same place as autistic people sharing experiences]&quot;

**P** , i: Sometime…the kids are brought along [to the parent group] and they play somewhere on the side, and I&#39;ve seen the reaction of some of them with different levels of autism, how they react to their parents being involved…there&#39;s one young girl, I could see her when her dad was talking at the meeting rolling her eyes and so on…it&#39;s a difficult thing because we want to help our kids but we don&#39;t want to tread on their toes either.&quot;

**P** , d: &quot;…if they [autistic users] were in some kind of education setting, you would also maybe have other people who may post on behalf of them so then that opens up another side, if they&#39;ve asked somebody maybe to help them post something, to get that side of it as well, it might not just be a parent who posts for people…&quot;

**P** , d: &quot;…if educators could be invited onto this as well…&quot;

**P** , d: &quot;I don&#39;t know how…confidentiality… would work [if educators were brought on board]&quot;

**P** , i: &quot;…a lot of people in education are…so overwhelmed with everything&quot;

**P** , d: &quot;…the more resources there are available to them [people in education] [the better], and maybe someone can see what an autistic child feels and how they react, and why, and if they&#39;re basically getting information from the horse&#39;s mouth, albeit via a platform like this, that can only be a good thing.&quot;

**P** , d: &quot;I do think that…whoever reports it, it needs to be the autistic person&#39;s story and not their [the reporter&#39;s] experience of the event, and that&#39;s the thing I think has got to come out of it the most.&quot;

**P** , i: &quot;…even if it was only one forum and autistic people saw it, they would still see that it was factual and it wasn&#39;t really saying that, &quot;I felt this&quot; or, &quot;oh it was a nightmare&quot;, and that will build up trust – so I think that would really be beneficial.&quot;

**P** , d: &quot;It wouldn&#39;t always have to be a parent, it could be anybody who works really closely with them [the autistic person] and wants to tell that.

R, _T_, i: &quot;…in those circumstances [someone helping an autistic person share] there&#39;s issues of consent, like can that person consent?

R, _T_, d: &quot;…there&#39;s issues around, is it [sharing on behalf of others] an appropriate thing to do?&quot;

**P** , d: &quot;It&#39;s that confidentiality [that is an issue with parents sharing for autistic people]&quot;

R, _T_, d: &quot;What permission would you want to give to someone like that [the parent of a non-verbal autistic person]– do you think they should be able to use the platform?&quot;

**P** , i: &quot;We know young people want independence and need independence from their parents&quot;

**P** , d: &quot;We need to somehow encourage it [independence from parents].&quot;

**P** , i: &quot;I do still believe that people who can&#39;t express themselves, their near and dear ones still need the opportunity&quot;

**P** , d: &quot;I&#39;ve been going to a parent&#39;s group with my wife for about 6 years now, and it got so big that it&#39;s probably just as well that we had lockdown because now they do it on Zoom rather than in their house&quot;

R, _T_, d &quot;…would you want to separate out the parents and the people with autism into different…groups&quot;

**P** , d: &quot;Yes, for me, yes&quot;

**P** , d: &quot;Yes, I would do at this stage, yes&quot;

**P** , d: &quot;- but…offer support to both&quot;

R, _T_, i: &quot;Right…absolutely&quot;

**P** , g: &#39;I don&#39;t know exactly how this would work, but I know there&#39;s support around, we [group for parents of autistic people] haven&#39;t met since February, but I think 50 or 60 people go every week they go on the Zoom…because…the parents feel they need to discuss.&quot;

**A, P,** g: &quot;…the people who are reporting on behalf of someone else, if there&#39;s no ability to edit after you put it in, are really thinking &quot;you&#39;ve done a shoddy job&quot;, and that&#39;s going to be awful&quot;

**A,** d: &quot;we were discussing around different sorts of users, and in relation to the presentation, we don&#39;t want it to be about neurotypical people talking about non-neurotypical people.&quot;

**A, P,** i: &quot;There might be a point of misunderstanding though if a parent or a support worker, PA [personal assistant], or whatever, was reporting constantly, because they had this preconception that what had made things better was people who are writing for comments, that they think there are solutions that are going to be offered in the number of postings and they misunderstand how the data is being extracted, so something in the precursor of, you know, &quot;why are you submitting the experiences and what&#39;s happened&#39;, but there will be people who go, &quot;oh, oh, somebody&#39;s going to help me.&quot;

**P** , d: &quot;…it&#39;s not always a parent who&#39;s reporting, and it might not be a supportive parent who&#39;s reporting, so it could be a really skewed report of something, so to get the facts it has to be a factual reporting, whether it&#39;s just a case of, &#39;we were in the train station this is what happened, and that&#39;s it&#39;, that will help, because it will tie into other people&#39;s findings&quot;

**P,** d: &quot;…some families are really not supportive, and [the experiences] they may put [into the platform] may be really counter-productive to the research and may not help at all, so I really think the emotion just really must not be in it.&quot;

R, _T,_ g: &quot;…we [the parent group] got to a place where we thought it might be a good idea to support someone else to be able to share a story, rather than to share a story on their behalf&quot;

**A** , d: &quot;…if there&#39;s going to be any level of somebody speaking on behalf of or even inputting on behalf of someone else, then that needs to be really clearly flagged that that&#39;s what&#39;s happened&quot;

**A,** d: &quot;…to be able to have a note that clued you into the limitations of an opinion that has been mediated in a way that can&#39;t be accounted for&quot;

**A,** d: &quot;– two elements of that – make it really clear who actually wrote the answers to that, and make it easy for people so it&#39;s not just mediated by other people.&quot;

**A** , d: &quot;I just think people should be able to express themselves and if they want to express what they think someone else experiences in good faith, then they oughtn&#39;t feel like battered by…discourses into not being able to give that&quot;

**A,** d: &#39;it also should be really easy for researchers to understand the difference&quot; [between direct and indirect reporting of experiences]

**A,** d: &quot;…we don&#39;t actually know the experience of this person because we don&#39;t have their testimony, we have the testimony of somebody who thinks they can speak for them, and the limitation is we have no way of knowing how accurate that is.&quot;

**A** , d: &quot;I think it&#39;s really important that the scientists don&#39;t think, &#39;well they [a non-autistic person] said they had this experience [an autistic person] that means that&#39;s true&#39;&quot;

**A** , d: &quot;It&#39;s a tricky one because I understand the argument that, as yet, people haven&#39;t found a really great way to include everyone, and if one way to answer that is we can&#39;t allow anyone to speak on their behalf, I can understand how that would hold back research that might end up bringing really useful things into the world for them, regardless of whether it&#39;s a super accurate representation of what that person would have expressed, but it&#39;s super important that people don&#39;t just take it as like a fact, that for the researchers they understand that this is just their interpretation of what they understand.&quot;

R, _T,_ d: &quot;I wholly agree with that&quot;

R, _T,_ i: &quot;…certainly this is something that, when we were designing these sessions, there was somebody who I worked with and who is a volunteer who said, &#39;you need to split these up into direct and indirect&#39;, and I think that has been really helpful just having that cluster, to make sure they&#39;re not mixed.&quot;

**A** , d: &quot;…a few things I did say were admittedly controversial when I spoke about how parents should have the right to say what they feel when dealing with their children, especially when the children have meltdowns as well&quot;

**P** , d: &quot;I&#39;m a parent but I would not feel comfortable reporting my son&#39;s opinion or my son&#39;s personal view of something because I can&#39;t&quot;

**P** , d: &quot;…even if there&#39;s no opinion on why it happened, the information needs to be there without the person&#39;s side of it, because I can&#39;t say how that made him [autistic son] feel, and I can&#39;t, also say how that made me feel&quot;

## Peer support

**A,** P, g: &#39;it&#39;s to give people the language, you know, by reading the other people who can themselves write, and part of this is not just about knowing, or articulating, that you have your own sensory issues and how to pinpoint them, but learning how to self-advocate, learning what strategies can help. So, if this is going to be a very responsible platform, it really must help that side of things, as well as the other.&quot;

**A, P** , d: &quot;…one thing we&#39;re trying to push in Scotland, and increase resource in, is understanding the importance of peer support and peer mentoring, so autistic people supporting autistic people…so this could be an opportunity for the platform…to position it in that way.&quot;

## Supporting parents and carers

**P** , d: &quot;…it&#39;s sort of like that thing on aeroplanes, you know when people say – remember when we used to travel on holiday – before lockdown – when they tell you about the masks coming down, and the carer needs to put the mask on before they put the mask on the person they&#39;re looking after.&quot;

**P** , d: &quot;The parents do need support&quot;

**P** , d: important to think about &quot;the stress of parents&quot;

**P** , g: &quot;…I know there are parents who have it way worse than I do – I know it because I&#39;ve met so many of them, and some people really, really need more and more help&quot;

**P** , g: &quot;…everybody needs just to spill it out, really.&quot;

**P** , i: &quot; I can give a very clear example…of a Mum whose daughter was coming up to 11/12 years of age, reaching puberty…quite early, and the Mum was absolutely terrified that this girl who looked like a grown woman from the outside is extremely vulnerable…not just to the sexual predator, but to any boy who might find her attractive and might want to ask her out, even on an initially innocent basis – because she had really no idea about – even all the menstrual cycle stuff she was finding really difficult to explain…there&#39;s so many issues…parents like this do need to be able to share and get support because it is really difficult.&quot;

**P** , i: &quot;There are people who don&#39;t have close-knit families, people who don&#39;t have other problems…so this is a big thing.&quot;

R, _T_, i: &quot;…that&#39;s a lot to deal with&quot;

**P** , g: &quot;…right along the spectrum, it creates such pressure for the carers, and they need to be as strong as possible to provide the best sort of support to their family as they can.&quot;

R, _T_, i: &quot;…really specific guidance?&quot;

## **Accessibility**

**P** , d: &quot;…the phrase I didn&#39;t hear a lot of today was &#39;hidden&#39; or &#39;invisible disability&#39;

**P** , d: &quot;…there&#39;s some interesting comments come through, particularly from [PA] about this&quot;

**P,** i: &quot;(R)&#39;s concern was people on the spectrum who cannot communicate easily&quot;

**A, P** , d: &quot;…How we can actually support and find some resource to get that voice in there [people with communication differences]?&quot;

**A, P** , i: &quot;I asked him [autistic son] to find a way through it [communication challenges], and he did it by mind-mapping.&quot;

**A, P** , d: &quot;I&#39;ve learned to mind map from my son, in order to navigate things that I find too difficult to put into words, or that I overcomplicate, and so there&#39;s lots of different methods but we&#39;re not allowing it in the current form.

R, _T,_ g: &quot;Yep, I really hear that – I think one of the things that one of the things we&#39;ve pretty much decided on is it&#39;s important to include lots of routes to communicate, so - lots of additional ways of entering information.&quot;

R, _T,_ g: &quot;…a lot of research has been done around accessibility which is open, you can view it on the repository…for that precise reason [that there are lots of different valid methods of communication]&quot;

R, _T,_ g: &quot;I guess there&#39;s some difficulties around whether there is a group who aren&#39;t reached that way [using additional routes], and whether also the different ways people communicate can be examined in the dataset.&quot;

R, _T,_ g: &quot;maybe [it would be] worth doing a newer version of the platform… an improved one, to include more people?&quot;

**A, P** , d: &quot;It&#39;s like a &#39;Part 2&#39; [the improved platform], but I&#39;m resistant…to removing people, this marginalisation…because it&#39;s like a double removal of people, because they&#39;ve been removed to the bit where someone speaks on their behalf, and then it becomes like I felt when I was in multi-agency meetings where I&#39;m fighting to keep myself in the room, as well as my son who can&#39;t talk to anybody, he&#39;s not even really talking to me, and…I don&#39;t know what I want to say, and then it just becomes all fuzzy.&quot;

A, d: &quot;I kind of think it sounds, it&#39;s really bad to be like, &#39;oh that&#39;s a phase 2 thing&#39;. It&#39;s like saying, &#39;oh, that&#39;s difficult, we&#39;re not going to include you in the main thing&#39;. &#39;Oh, that&#39;s complicated, we&#39;ll think about you later&#39;, that sounds really rubbish to me.&quot;

R, _T,_ d: &quot;Okay, thanks that&#39;s really useful to think about.&quot;

**A, P** , i: &quot;…with the group of parents who moderate if stuff is submitted that way [in the way the autistic person prefers to communicate], cos the interpretation of it to help researchers, that&#39;s a very valid way of presenting your feelings.&quot;

**A** , g: &quot;It strikes me that there&#39;s maybe 2 separate issues, which is that, obviously, how we can optimise the platform for people who are perhaps non-verbal, have non-verbal needs can participate in that, whether we&#39;re looking at different formats, different systems and functionalities to allow that to happen and how that happens.&quot;

**P, A** , d: &quot;I have problems interpreting text [if] there&#39;s nothing visual to interpret&quot;

**P, A** , d: &quot;I keep saying non-verbal, I don&#39;t know if you&#39;re happy with that phrase.&quot;

**P, A** , g: &quot;…there are people who are less likely to use the platform as it exists at the moment. I don&#39;t want to lock out the possibility that the parents or support workers could enable them to do it in a different way.&quot;

**P, A** , i: &quot;I think we have to distinguish between non-speaking and non-verbal as well, because non-verbal is a subset of non-speaking, the non-speaking – a lot of them do think and words and thoughts and understand them, they just can&#39;t control their muscles and vocal movements&quot;

**P, A** , d: &quot;Yes, just look at &#39;The Lost Voice&#39;, the comedian, because he scripts himself, I said never misjudge or have a preconceived idea of someone&#39;s intelligence based on the ability not being able to speak&quot;

**P, A** , i: &quot;…my daughter&#39;s quite verbal with speaking, and she speaks and articulates quite well…[but that&#39;s] where sensory issues is more than just the impact the sounds and the lights have, it&#39;s also your ability to interpret your own internal emotions, your ability to communicate in words, find words and what they mean, so interoceptive as well, and then you&#39;ve got alexithymia coming in, so it is hard even for some of those that are quite verbal and use their speech to communicate and articulate and understand their sensory things – so it&#39;s not just those who don&#39;t use words to speak is it? It&#39;s a whole.&quot;

**P, A** , i: &quot;…my son…he snapshots it [what he communicates], so it&#39;s short, brief, and it&#39;s just enough for other people to get a sense of what&#39;s going on, but if he embellishes it or makes it bigger, he would dream about – he has significant nightmares of things – and all these experiences get muddled into one terrible nightmare – so he&#39;s learned through bitter experience that share so much but not too much, because then it replays itself&quot;

**P, A** , i: &quot;My daughter couldn&#39;t share anything with this thing [the platform], she&#39;s very [high] anxiety and demand avoidant, so she&#39;d just so no. She also has great difficulty ever articulating how she feels.&quot;

**A** , R, _A,_ i: &quot;_So_ with your daughter then, do you think something like this she would really guess struggle with, would she able to say: &#39;I didn&#39;t like this, but I don&#39;t know why&#39;?&quot;

**P, A** , i: &#39;No, she [my autistic daughter] needs…I think she&#39;s got a development to go before she gets there [saying she struggles with something in a platform]…she was diagnosed with a learning disability, so she meets a &#39;complex needs&#39; category, and meets a &#39;low-functioning&#39; category…but she ski-races nationally. (Categories were &#39;tongue in cheek&#39;)&quot;

**P, A** , i: &quot;she&#39;ll [my autistic daughter] need a lot of support and learning to even be able to access or engage with something like this [platform] or even understand her own thoughts and feelings &quot;

**P, A** , d &quot;In my own experience, if I look at too much text now, I marvel that I have any qualifications in anything, because I feel overwhelmed by it&quot;

**P, A** , g: &quot;…people who are accessing this platform, if there is too much heavy explanation of anything, how does that help the majority of people who prefer to look at things visually?&quot;

**P, A,** d: Pdf version hard to read, not accessible

**P, A** , i: &quot;I don&#39;t know how you make it inviting to them [developers] to help with this part of the project, because it does require them to acquire maybe a different type of interface or something to allow for the input of different information in different ways, maybe visual or whatever.&quot;

R, _T_, d: &quot;…I can really see the argument that it&#39;s important to do everything that we can to include people. It&#39;s just that are we realistically going to be resourced to do that better than somebody&#39;s own parent, who has found a route?&quot;

R, _T_, i: &quot;There were some people [in previous focus groups] who had autistic children who were non-verbal and maybe couldn&#39;t communicate in lots of situations where for many people it wouldn&#39;t have been an obstacle, and they were sort of saying, &quot;well. I&#39;m tired of my autistic child being excluded because he or she couldn&#39;t speak for themselves, and I want to be able to represent them.&quot;

**P** , d: &quot;I think we want to try and offer independence of expression as much as possible&quot;

**P** , d: &quot;…are there…things other than words, of expressing stuff?

**P** , i: &quot;…with this parent&#39;s group I go to which is just for girls, the girls – all the little girls who come (and sometimes they&#39;re not so little) …do all sorts of arty and crafty kind of stuff to express themselves.

**P** , i: &quot;[Good for autistic people to be able to] …vocalise…in some sort of way, whether it&#39;s a video or a picture&quot;

**P** , g: &quot;…not everybody has that support at home, or in different environments. We just don&#39;t have it – it would be great but we&#39;re just not that type of society, unfortunately there&#39;s just not a lot done [for autistic people with communication differences].&quot;

R, _T_, d: &quot;…there&#39;s a lot of social infrastructure around this, that we&#39;re designing a website but really the website is in the context of the society that we&#39;re in, and so maybe there&#39;s something about how we disseminate it.&quot;

R, _T_, d: &quot;…maybe we need to talk to professionals who support maybe non-verbal autistic people, and that&#39;s a group that we need to…get on board, so we make sure that the website is really available to people&quot;

**P** , d: Yep, absolutely,

R, _T_, d: …in terms of publishing stories, having that whole range of people&#39;s preference in terms of how they submit their story, in terms of having spoken things, drawn things, written things, I think that&#39;s really good for anyone to learn about autism as well and just how diverse it is.&quot;

**P** , d Yeah, yep

R, _T_, d: &quot;It&#39;s really tricky and really important. This particular part [inclusion] is a real tangle I think&quot;

**P** , d: Yeah, definitely

R, _T_, d: &quot;…it&#39;s [accessibility is] such a complex thing&quot;

R, _T_, d: &quot;the designer for the project did a lot of work on creating accessibility…we made that a priority of the design work&quot;

R, _T_, d: &quot;[we] came up with all of these different options&quot;

R, _T_, d: &quot;…drawing was one [option], so you could potentially come on and use your phone and draw what you&#39;re feeling, express yourself in that way&quot;

R, _T_, d: &quot;upload a video [was one option]&quot;

R, _T_, d: &quot;speak…was another [option]

R, _T_, d: take or upload a picture]

R, _T_, d: &quot;… just writing text…is obviously unideal for lots of people&quot;

R, _T_, d: &quot;…the more things you add, the more cluttered the user interface is, and then at some point that can become overwhelming for some autistic people who find just having too many options difficult – so there was a balance there.&quot;

R, _T_, d: &quot;… there&#39;s a balance in terms of, sort of I really don&#39;t want to imply that we&#39;ll do the, sort of, second round because non-verbal people come second – it&#39;s just that there&#39;s a core function of the platform that needs to be developed first before that can be added.&quot;

R, _T_, d: &quot;What will be useable for research is another balance&quot;

R, _T_, d: &quot;…I guess where I&#39;m really struggling…is however many options we add eventually for ways of people communicating, there&#39;s a whole set of skills…or abilities around being able to access the platform in and of itself&quot;

R, _T_, d: &quot;…the need potentially to really work with whole social systems or even institutions when we put this out, to make sure that we actually can get people using it.&quot;

**P** , d: Yep, absolutely, yeah, -

**A, P,** i: &quot;regardless of whether or not you can communicate, verbalise yourself through speech, doesn&#39;t mean that you can understand your own sensory issues…it doesn&#39;t mean you can articulate them: there&#39;s interoception issues, there&#39;s alexithymia&quot;

**A, P** , d: &quot;I have trouble writing. I can write, but I&#39;ve got a difficulty with that, so words are not natural for me: I&#39;m more music, and positions. and body language, so that&#39;s how I communicate my feelings, so once I start speaking, I struggle to stop, and that&#39;s why I&#39;ll go into a little monologue then be quiet&quot;

**A, P,** i: &quot;if you do admit some forms of editing information for non-verbal people have a terminology they would want to use, by forming it visually through images or whatever&quot;

**A, P,** d: &quot;Are there people in our community who we haven&#39;t spoken to yet who have the ability to help design the platform, but just don&#39;t know that it needs any extra elements? So how are we reaching out to people who may have these skillsets instead of having to go backwards by getting a new company on board and all this sort of extra smozzle that goes with it?&quot;

R, _T,_ g: &quot;…we thought also, responding to your point as well, [A], that there was something sort of about – there&#39;s a whole social infrastructure surrounding who gets to take part in things, and maybe reaching out to supporters or people with expertise to find out how to help people use this platform&quot;

R, _T,_ i: &quot;…it&#39;s about people as well about how we design it&quot;

**A,** d: &quot;find ways to make people more able to use it [the platform], and not as a kind of a nice-to-have, this is essential&quot;

**A,** d: &quot;I am so conscious that I have had so many privileges and opportunities in my life, that since being diagnosed I&#39;ve been able read scientific papers and I&#39;ve sought out information where I&#39;ve had an understanding of a social model of disability&quot;

**A,** i: &quot;…while I think everyone should work towards a better understanding of this stuff, loads of people have to think about keeping a job and putting food on the table, so it kind of doesn&#39;t surprise me if some people have not had the same opportunity to educate themselves that would produce the kind of constructive responses that I think they ought to be able to produce&quot;

**A,** d: &quot;…it just seems to me that those factors might combine [not having access to education and being excluded if they use misinformed language], so that the people excluded are those who have already been excluded from the sorts of opportunities to have the education about disability rights that I wish they&#39;d had, but I haven&#39;t given it to them.&quot;

**A,** d: &quot;…it&#39;s really important to find a way that people can give their own opinions on things, and finding a way for them to be included is prioritised, at the same level, rather than just, &#39;oh, we need to find any answers to just fill our research out&#39;

## **Inclusion**

**A,** g: &quot;we…discussed a lot about the subjective nature…the personal nature of what is uploaded to the platform&quot;

**A** , **P,** d &quot;…normally we don&#39;t have platforms like this, so can we do something to get a bit creative to increase the value of the platform to make it more inclusive?&quot;

**A** , i: &quot;I&#39;m not non-verbal, but if I was and if I was updated on how thing was going and it was like, &#39;yeah, we&#39;re going to think about you next&#39;, it would kind of probably be like, &#39;well isn&#39;t that the problem to begin with&#39;&quot;

**A** , g: &quot;I understand where this is coming from [concerns about non-verbal people being excluded or made to wait], but the reality is that this going to be a developing project, and as a project as a whole you want to help as many people as quickly as possible, so getting it out in some form quickly rather than perfecting every aspect of it, and then getting it out later, in a broad sense makes more sense.&quot;

**A** , d: &quot;…while everyone still gets to say their piece to the researchers, your moderation bottom-line has to preserve the ability for everyone to contribute&quot;

**A** , d: &quot;…I don&#39;t know if this is still valid, considering I haven&#39;t really done research in about 3 years, but right at the start it [the presentation] was talking about how non-verbal people don&#39;t get heard as much, and as a result don&#39;t appear in research – that appears to only be discussing qualitative research, that there is far less of in autism.&quot;

**A** , d: &quot;I also found that there was a gap between who [autism research] was covering – more severely autistic people tend to be looked into more than more high-functioning, from what I could gather.&quot;

**A** , d: &quot;…obviously, if we&#39;re talking just about experience and research into experience, fair enough, but I&#39;d say that scientifically there&#39;s an overall better understanding of less functioning autism than there is of high-functioning autism.&quot;

**P, A** , d: &quot;…I think we&#39;re a long way away but if a platform like this is going to be inclusive, the only way we can say it is if there&#39;s a huge effort, parallel, into supporting ways to hear the voices and the thoughts of [non-verbal and non-speaking autistic people]&quot;

**P, A** , d: &quot;Yep, even if it&#39;s moving slower&quot;

**P, A** , d: &quot;…you have to build that [inclusivity] into the resource, but it will take more time in order to do this&quot;

**P, A** , d: &quot;…the benefits of sharing other stories of the non-verbal voices – somehow that isn&#39;t getting across enough&quot;

**P, A** , i: &quot;…is this not a moment to bring on another set of people who wish to volunteer their time?&quot;

**P, A** , i: &quot;…where my daughter is at the moment, I think I&#39;d have to say, no I couldn&#39;t really speak for her experience, because she doesn&#39;t even want to talk about it with me, she doesn&#39;t even go there with me, so it would be very much my view&quot;

**P, A** , i: &quot;my [autistic] daughter, despite being very articulate about some things, is not able to talk about any of this, is not aware of any of this&quot;

**P, A** , d: &quot;…[there is] the risk of oversimplifying – sensory issues is all about…the whole bigger picture about my daughter understanding her feelings, understanding what she is feeling, putting them into words, let alone understanding what to do about it.&quot;

**P, A** , d: &quot;…when she [R] was describing her project… I didn&#39;t see the word &#39;inclusion&#39;. I put it in the chat, but the idea of the platform is to foster positive inclusion.&quot;

**P, A** , g: &quot;…because I work for disabled co-production, we use the word &quot;truthfully inclusive&quot;, and you may question what I mean by that, and it means leaving no-one out, there&#39;s no possibility, because everybody has somebody that can help them put their voice forward.&quot;

**P, A** , i: &quot;Yeah, one thing, just, I was looking at what was sent round, and I think it was sent to us all, and it&#39;s about, how do we make sure that it is inclusive?&quot;

**P, A** , d: &quot;How do we ensure that all voices are heard?&quot;

**P, A** , d: &quot;I&#39;ve done some dreadful faux pas, like, &#39;why is that presentation going on, why is there so much audio description&#39;, and then, during the introductions, there&#39;s someone who&#39;s visually impaired, and they go, &#39;that&#39;s for me&#39;, and I go, &#39;huh!&#39;&quot;

**P, A** , d: &quot;…That could be any autistic person thinking; &#39;why are there so many visuals&#39;…and it&#39;s because it&#39;s got to encompass everyone.&quot;

**P, A** , d: &quot;[The problem] may be the others…more than you…if they can&#39;t believe that you didn&#39;t do it maliciously&quot;

**P, A** , g: &quot;…there&#39;s still this huge silence [around inclusion]&quot;

**P, A** , d: &quot;What I find is there&#39;s this huge…apathy, and nobody really warns you, so how do you realise and form an opinion and self-awareness?&quot;

**P, A** , d: &quot;&#39;Mentalisation&#39; is a word that I find useful…being aware of what you can do that might have hurt someone else, and putting yourself in their shoes: if that was you, how would you feel?&quot;

**P, A** , d: &quot;I would bring in double empathy here…naturally, understanding different people come from different perspectives, and have differing needs, and different experiences, and they will approach things in different ways and respond to things in different ways – so if I put my foot in it, like that example there (PA), what I then do is just…let everyone know that I&#39;m on a learning journey, and say &#39;thank you for reminding me&#39;.&quot;

**P, A** , g: &quot;…it&#39;s really tricky, isn&#39;t it, because we are where we&#39;re at, and now we&#39;re trying to have this thing where we&#39;re trying to give the voices of all, but we&#39;ve not actually put processes and places in society at a general level&quot;

**P, A** , g: &quot;…we&#39;re jumping ahead into a model where we haven&#39;t built the infrastructure or…methods for it&quot;

**P, A** , d: &quot;I&#39;m not sure what the timeframe is of this project…there needs to be research into exploring how we get to hear the voices of more [autistic people].&quot;

**P, A** , d: &quot;…also where in this, as [A] has said, are the co-occurring conditions?&quot;

**P** , d: &quot;…every person on the spectrum has got a unique perspective.&quot;

R, _T,_ g: &quot;…there might be some things that just lots and lots of people say, and there might be some things that are very different, and it&#39;s important to communicate…just because you&#39;ve met one autistic person doesn&#39;t mean that you now understand the whole autistic experience&quot;

**A, P,** d: &quot;I think we&#39;ve also got to realise that making this an inclusive platform is more than just including those that don&#39;t communicate through words, or who are non-verbal, but also the important role that peer groups will play, as well, so people can go on and read other,
 Become more self-aware, become more able to articulate into words&quot;
**A, P,** d: &quot;…we&#39;re talking about making it [the platform] really inclusive, but until people have an understanding of it themselves and can articulate it, they&#39;re not going to be putting it on the platform&quot;

## Socio-economic

**P** , i: &quot;I don&#39;t know anything about the sample of people who you&#39;ve got here today, but it probably isn&#39;t a very broad spectrum of class or social attitude&quot;

**P** , i: &quot;as [P] was suggesting, there&#39;s so many domestic situations which are onerous and where there&#39;s no understanding at all.&quot;

**P** , i: &quot;I try to understand, and I feel bad about my inability to do that properly, but there would be many other people who haven&#39;t even got the time, the luxury to do that&quot;

**P** , g: &quot;…people are struggling on so many levels, not only just this year, but in general…family groups are fragmented, work situations are collapsing&quot;

**P** , i: &quot;…people I think are struggling to put food on the table, never mind thinking about what&#39;s going on in somebody else&#39;s mind, I mean we&#39;re fortunate because we&#39;re aware of the situation because it is difficult.&quot;

**P** , i: &quot;…how close is it [autism] to mental health? Is it a cause of mental health problems? …Well, it&#39;s probably not a result of them, but…co-morbidities are everywhere&quot;

## Age

**A** , g: &quot;…in a totally not-ageist manner, it&#39;s also very generationally based [what people would think of as offensive]&quot;

**A** , d: &quot;I know that my grandfather has opinions that shock me…even he&#39;s [my father&#39;s] got different opinions to me.&quot;

R, _T_, d: &quot;How would we make it so the differing generations could feel comfortable on the platform? Do you have an idea where you would want to strike that balance?&quot;

**P** , d: &quot;It&#39;s difficult to tell&quot;

**P** , d: &quot;It&#39;s going to be a challenging thing to do&quot;

(P, d): &quot;I was just working on another writing project with somebody and we got to loggerheads because…I was using long words and they were saying this is not going to sell if I&#39;m using long words, and I&#39;m thinking, &#39;no but the long words can be the correct words…and then we get the whole, should we be dumbing down, to catch a broader range of people, and would other people think it&#39;s childish or a bit patronising?&quot;

**P** , g: &quot;I don&#39;t say this from an angry or anything point of view, I think there&#39;s an interesting place. There&#39;s so many things to do with technology and so on these days where young people know stuff that old people don&#39;t know&#39;

**P** , g: &quot;I think this is possibly the first time in the human experience that this has ever happened…because it&#39;s always been, &quot;I&#39;m older than you, I know more than you&quot;. In many ways that was true, but it&#39;s not anymore – &quot;

**P** , g: &quot;No, not at all, not at all – &quot;

## Gender

**P** , i: &quot;…but then again you have a situation like (P)s son, my daughter – for a start they&#39;re male and female, which is a massive canyon between the two.&quot;

**P** , i: &quot;I&#39;ve got two other daughters as well, neither of whom have ASD, but having grown up one of 3 brothers, and the only female I knew for many years was my Mum, there are …gender complications.&quot;

**P** , i: &quot;…when I mention it in front of [my autistic daughter], she gets annoyed because she doesn&#39;t like this older person&#39;s way of seeing things in a more binary style&quot;

**P** , i: &quot;…because she&#39;s [my autistic daughter] young she can understand the spectrum of gender and sexuality, and all these other sorts of things, but I…because of my age maybe, I try hard, but I don&#39;t really get it, and that&#39;s another thing which I think comes into play as well&quot;

**P** , g: &quot;…there&#39;s certain things, when you reach a certain age, you shut off from a more open, modern day approach.&quot;

R, _T_, d: &quot;…is that [age differences] something you&#39;re saying should be taken into account in the way that the code of conduct is written, or is that something you would put into the training?&quot;

**P,** d: &quot;I think certainly in the training&quot;

**P** , i: &quot;…if you&#39;re over 35, there&#39;s some things the younger generation, in addition to the ASD affecting them will see differently.&quot;

## Glossary

###

**A** , g: &quot;I think in order for…it be clear it may offend someone but not everyone, a glossary should be present, saying &#39;ASD&#39; means this, &#39;high-functioning&#39; means this, &#39;low-functioning&#39; means this, etc. – just to clear that up with some people.&quot;

**A** , g: &quot;I think there would be a place for a moderator-approved glossary of certain terms, because otherwise somebody could be constantly objecting to the term &#39;ASD&#39; when, as of now, 2020, I think a lot of people will still use that term and will do so with good intentions.

**A** , d: &quot;I think that&#39;s [learning about others] almost a benefit of this [platform], so that&#39;s why I would suggest the glossary is there on the top of the home page or on top of the entry table, because it also gives an opportunity to educate people how to discuss these things and these sorts of conditions.&quot;

**A** , d: &quot;Yeah, you could even flag, like, these are the sorts of things that you could edit – like if you just change this thing, to this other one, it&#39;s fine.&quot;

**A** , g: &quot;…we discussed potentially having a terminology glossary or something along those lines to…enable people to help… understand ways of communicating and how their share sounds&quot;.

**A** , d: &quot;I think in order for…it to be clear it may offend someone, but not everyone, a glossary should be present, saying &#39;ASD&#39; means this, &#39;high-functioning&#39; means this, &#39;low-functioning&#39; means this, etc. – just to clear that up with some people.&quot;

**A** , d: &quot;I think there would be a place for a moderator-approved glossary of certain terms, because otherwise somebody could be constantly objecting to the term &#39;ASD&#39; when, as of now, 2020, I think a lot of people will still use that term and will do so with good intentions.&quot;

**A** , d: &quot;I think that&#39;s [learning about others] almost a benefit of this [platform], so that&#39;s why I would suggest the glossary is there on the top of the home page, or on top of the entry table, because it also gives an opportunity to educate people how to discuss these things and these sorts of conditions&quot;

**A** , d: &quot;Yeah, you could even flag, like, these are the sorts of things that you could edit – like if you just change this thing, to this other one, it&#39;s fine&quot;

**A,** d: &quot;…a glossary [is] almost essential…to find a different way where people may refer to their condition, and ways that are considered appropriate and not
**A,** d: &quot;…don&#39;t use the word &#39;retard&#39; for example, because probably only 30 years ago that would have been the way some of us would have been referred to&quot;

##

## Segmentation

**A** , d: &quot;…in terms of it being a welcoming place…you [Researcher] mentioned the potential to bring in children, the potential to bring in parents, letting their children use the platform, and I do wonder whether there is something around user segmentation, and perhaps treating children slightly differently. I don&#39;t know whether that&#39;s possible.&quot;

**A** , d: &quot;I just wonder whether there does need to be a slightly different policy, or some users potentially being able to see or not see certain things…because it would make it a more welcoming place for parents and children.&quot;

**A** , d: &quot;It is [segmented censorship], because…in that initial form that you showed us there is a date of birth entered, but obviously if parents are making an account and not children, um, then yeah I think if a parent&#39;s signing up, they may be able to state that their children&#39;s seeing this as well.&quot;

**A** , d: &quot;Does it [segmentation] mean therefore that certain things like software get introduced? Like if a parent was using a computer and therefore they logged in to the form itself, they could click on a feature that says…something along the lines of &#39;parents in the room&#39;, or &#39;parents online&#39;…and there would be circles that would get flagged up [so] they themselves don&#39;t need to see it [a particular post] as a result of clicking on that feature, and it&#39;s a better way than trying to enforce public censorship.&quot;

**A,** d: &quot;I…wonder whether this is actually a kind of place for a hierarchy or segregation of different kinds of uploaders, because obviously this platform was initially about non-neurotypical people uploading experiences, and obviously then we want to be getting a cross-section of the community including parents, other people in the community who have some interest in this process.&quot;

**A** , d: &quot;I think fundamentally the priority is around non-neurotypical people and their experiences. So, I was wondering actually if you would want a different level of functionality or level of autonomy for those users?&quot;

**A,** i: &quot;…for example, for parents, more reminders could be built into the platform, or greater kind of functionality…so they can really kind of take a step back and think, &#39;okay, is this really what I&#39;m saying in the heat of the moment. or something that in the cold light of day I probably wouldn&#39;t have said&#39;, and maybe building some of that capability into the platform by nudges.&quot;

**P,** d: &quot;I still think for parents there needs to be a separate place&quot;

**A** , d: &quot;…it definitely can be a separate place [on the platform] where they [parents] can do [share experiences].&quot;

**A** , g: &quot;… we talked about segmentation of users&quot;

**P** , g: &quot;if parents were concerned [they] still need somehow to get support.&quot;

**P** , d: &quot;We currently came to… not really a conclusion… that maybe parents should have a separate section in which to communicate, so that people who are on the spectrum and are able to communicate for themselves can do&quot;

**A** , d: &quot;Perhaps, if we are talking about subsections… people with additional neurological conditions having their own space would be great, because I often find it very hard to separate which of my issues or my challenges are caused by what, and obviously the same goes for other ongoing conditions and mental health as well.

**A, P** , d: &quot;maybe it would be a good idea to have an autistic voice section plus a non-autistic voice section.&quot;

**A, P** , d: &quot;…parents can be autistic too, so I don&#39;t think it&#39;s parents [which should be a distinct category]&quot;

## Platform design

**A, P** , d: &quot;…a facility that uses ways that autistic people communicate themselves to get their feelings out, which might be, you know, mind-mapping, spider charting, could be painting, it could be anything, but it still records that experience.&quot;&quot;

R, _T_, g: &quot;…if we use, for example, machine learning to pull out themes, so basically, look at texts and take out some of the common themes to make suggestions on how to change environments…if something is maybe a video or a drawn picture, that&#39;s going to be harder and a different route&quot;

**A, P** , d: &quot;…in that…&#39;what would make it better?&#39;, in that sometimes [people could put] tips to other people, whether those tips can be followed or not, or that they could be read ultimately by someone like London transport to make improvements – so that aspect of investment, why it&#39;s good to share your story with everyone, isn&#39;t made clear within the precursors or the build-up, so I think you need to put an extra thing in there.&quot;

**P, A** , g: &quot;…there will need to be multiple types of delivery of the guidelines, so there could be little intro videos maybe&quot;

**P, A** , g: &quot;…having that multiple different picture format, video format, written format – &quot;

R, _T_, d: &quot;…one thing at the beginning is that you could have, &#39;are you supporting someone else?&quot; to share an experience, and then if you tick that box, you could then have a set of guidelines including, &#39;don&#39;t include your own interpretations of their experience&#39;.&quot;

**P** , d: &quot;maybe there was a tick-box when you started writing to say that you were reporting on behalf of someone else, so that was flagged up right away&quot;

**P** , d: &quot;you&#39;re aware that somebody else has typed that for somebody&quot;

## **Communication strategy**

**A, P** , g: &quot;…within that thing of the two boxes that you&#39;ve got that says &#39;share with researchers&#39; or &#39;share with everyone&#39;, what&#39;s the investment if you share with everyone? It&#39;s not made clear how much benefit there is to everybody&quot;

**A** , g: &quot;I…feel that that&#39;s…a problem of explaining to people what the platform is for…that a lot has been done with the moderation process…and it&#39;s for gathering experiences. I think a lot could be done…&quot;

**A,** d: &quot;I…feel that that&#39;s…a problem of explaining to people what the platform is for…that a lot has been done with the moderation process…and it&#39;s for gathering experiences. I think a lot could be done…&quot;

**P, A** , d: &#39;…the video that was done…by the actor with the experience of the tube journey, I feel that&#39;s all very well and good, but I think there should be an update…which is the experience of entering into a room, and the things that happen within a room…that actually does include all the people who are severely sensorily triggered. I don&#39;t know how that would be done, but almost the one for the tube is what I would probably expect to see about autism, but does it illustrate enough?&quot;

**P, A** , d: &quot;I did see one [a video] actually about someone just going into a room with friends, and then the party got a bit bigger, and showing them how they were feeling. It was done – I can&#39;t remember, a little while ago now.&quot;

**P, A** , d: &quot;…the autistic viewpoint could be the dominant one on that platform, [but] that may not happen. I think the extent to which that may or may not do depends on how it was rolled out, how it was positioned and marketed, and if you do strive and there are efforts to bring in wider autistic people into the community wanting to use the platform and supporting them to do that.&quot;

**P** , d, i: &quot;[autistic daughter with epilepsy has] done a few cartoony graphics like things, showing what it&#39;s like to have an epileptic seizure. And I&#39;m wondering if there are these kind of visual representations of what it might feel like inside the body of somebody having an autistic meltdown.&quot;

**P** , d, g: &quot;there is one…she [autistic daughter] often illustrates to me, which is very easy for men of a certain age, like me, to understand, is all this sensitivity to hearing, because you know that men, I&#39;m sure women as well, but as men get older you often hear them say, &quot;Oh please stop this noise I can only hear one thing&quot;. I&#39;m sure it&#39;s the same thing with women, but they&#39;re probably just much better at dealing with it.&quot;

**A, P,** g: &quot;… it&#39;s how you articulate it isn&#39;t it, because I think that is when you put it out there and market it.&quot;

R, _T,_ i: &quot;The thing that I think is important is that the public posting is part of helping others learn about themselves, or about their friends or colleagues who are autistic as well, in exactly the sort of way that [PA] was saying, and I think there&#39;s maybe a difficulty that we have with this platform of sort of conveying that.&quot;

**A,** d: &quot;That&#39;s necessarily clear when you&#39;ve got the public part of it…it might just be the way that we&#39;ve been discussing it over the whole day, that I don&#39;t know what the purpose of this is exactly – but it doesn&#39;t make perfect sense to me&quot;
**A,** d: &quot;…if people are aware [the platform is for research] before they post, then they are more likely to think, &quot;okay, this is useful for research&quot;
**A,** d: &quot;…just really emphasising what it [the platform] is about and emphasising that it isn&#39;t just a place to vent about your difficulties, it&#39;s a place to explain them.&quot;

**A** , d: &quot;I think that&#39;s a factor of making people understand what they&#39;re here to do&quot;

## **Moderation flow**

**A,** d: &quot;I think where the moderation process has to be really clear, is you&#39;re asking autistic people to socially communicate with you, knowing that from my perspectives that&#39;s one of the things that I struggle the most with, and while not trying to break any rules I may break some rules through my weakness&quot;

**A,** d: &quot;…the moderation would have to be a very clearly defined system with processes already in place&quot;

**A,** d: &quot;…in the event of the platform being popular, then there would need to be a very mechanistic and structured moderation process simply to enable the flow of commentators and the moderating process to…work effectively&quot;

**A** , d: &quot;…people should be welcome to say what they wanted to say, but…have a mechanism where people can understand that this isn&#39;t the place for emergency cries for help – not because no one cares, just because a semi-slow process that goes through moderation is just not the place to go for that.&quot;

R, _T_, d: &quot;It&#39;s really great, it also helps us with the fact that it&#39;s going to be really difficult to moderate all the posts and so we&#39;re going to really need to set expectations that it might be quite slow&quot;

**P, A,** d: &quot;I&#39;m online on Autistica&#39;s online forum, so there&#39;s a team of us trying to work around the clock, although it&#39;s live, it&#39;s not withheld, although we do approve posts and…comments&quot;

**P, A** , g: &quot;I know it does make it more difficult [withheld postings], and so there isn&#39;t really that time issue on this [platform] as such&quot;

**P, A,** d: When we do it [moderate], it alerts us to what we call &#39;reported content&#39;, and then we get a notification as moderators to go on that, and it isn&#39;t conditional on all of us moderators going on there, it&#39;s conditional that say two people go on, and they&#39;ll do voting, but generally on that one it&#39;s an individual reporting that they&#39;re offended by something, by whatever criteria, and other people vote. And in that we only get snapshots because there&#39;s usually lots of long threads of what this thing is, whereas we would see pretty much the entire log, or whatever it is, and then people were voting on that.&quot;

**P, A,** d: &quot;A very good point that helps us to authorise, to moderate, is to have particular words put in that creates an alert, we have that.&quot;

**P, A,** d: &quot;One thing that helps [with the Autistica forum] is, because Autistica becomes more and more established, they call a lot of people, so over 12,000 members in just a few years: the members are coming up a curve too to notify us, and that&#39;s what (PA) I think was saying, and I think that&#39;s very important to be built in too, because I think there&#39;s a risk&quot;

**P, A,** d: It&#39;s quite dangerous to assume that even a small group of moderators in such a new project would be able [to moderate well]: to think it&#39;s almost self-learning&quot;

**P, A,** d: &quot;If I was wanting to go for the jugular in something I post it&#39;d be very specific personalities, but that would be totally destructive&quot;

**A** , d: &quot;All the concrete and abstract debates we&#39;ve been having, what this comes down to, is how we do the moderation process?&quot;

**A,** d: &quot;I think also, in terms of that process, if it does turn out to be a fairly or highly popular platform, then that process will need to be fairly standardised and methodical, because you can&#39;t be making too many discretionary decisions, it just isn&#39;t going to work.&quot;

**A,** d: &#39;If it&#39;s lower engagement, then it might be better to have a bit more discretion, but if it&#39;s as popular as we hope then we may need less.&quot;

**A,** R, _A,_ d: &quot;I wonder what the process would be the other side? Do people want that post taken down instantly, do they want to know what happens afterwards?&quot;

**A** , d: &quot;…I think it would be good to see…a workflow chart of the moderation process, because I think it would be good to work through that and sort of visualise that on a more systemic level.&quot;

**A,** d: &quot;I think you&#39;re right: a process flow of which fields need to be filled in.&quot;

**A,** d: &quot;it&#39;s [moderation is] gonna be something that develops over time&quot;

**A** , d: &quot;I think there&#39;s obviously a very fine balance…so I think we need a kind of fettered moderation policy, and one that&#39;s kind of responsive…it grows with precedent, and works out what does work and doesn&#39;t work, and would need to grow with time too I would say&quot;

**A** , d: &quot;…a kind of written constitution then in that regard&quot;

**A** , d: &quot;It&#39;s [moderation] definitely something that needs to be a consistent work in progress.&quot;

**A,** d: &quot;…you could have a process where it takes your post and it…gets quarantined overnight, and that could help the fact that obviously there&#39;s not going to be a whole warehouse of moderators waiting for comments coming in…so you post it, and you know it&#39;ll go live 24 hours later so you can sleep on it.&quot;

**A** , i, d: &quot;I know many people, such as [A], would definitely disagree with me in this particular subject, you can&#39;t always police people&#39;s ability to say what they think in different situations…what offends me may not offend…and vice versa&quot;

## Quantity of posts

**A** , R, _A,_ d: &quot;I wonder if anyone has any thoughts if somebody posts, I don&#39;t know, four times a day every day, and they kind of got one voice coming quite loudly, as opposed to somebody might do once a month or every now and then, or something which has strongly influenced them: if there&#39;s a way of kind of balancing between the two to get a good level?&quot;

**A,** d: &quot;I think quantity doesn&#39;t always interact, or isn&#39;t always a correlation with the quality of the post&quot;
**A,** d: &quot;…don&#39;t exclude anybody, people should be free to comment as much or little as thy like&quot;
**A,** d: &quot;I think to be honest if people post loads, that&#39;s great, but if they want to interact with it very little, that&#39;s absolutely fine&quot;

## Self-moderating the posts you share

###

**A,** d **:**&quot;…potentially adding little pop-ups before they actually post to be like, &quot;are you sure you want to post that&quot;, so having this little moment to stop and think&quot;

**A,** d: &quot;…for me…it comes down to the devil&#39;s in the detail about how they…[human or robot moderators] can flag, filter, tag, group posts, so that people can…self-moderate.

**A,** d: &quot;I keep coming back to: in my former job, I used to write procedures and processes, and thought about, &#39;What would you need to have in place in order to categorise and censor things so that people can protect themselves?&quot;

**A,** d: &quot;I always go with, if I write something, sleep on it, and still stick to it then it&#39;s probably about right. And if I write on it, sleep on it, and change my mind then I&#39;ve probably made a mistake.&quot;
**A,** d: &quot;And I also think that part of it is in the sort of, nicking [A]&#39;s idea he said about behavioural nudges…trying to get the writer to not vent and just tap away and hit send, is if they have to sort of categorise it in some way, so – this is a topic about parenting, is it a trigger?... if they have to do some additional little steps, even tick-boxing, but additional steps or drop-down categories.&quot;

**A,** d: &quot;…you would say actually, &#39;I would rather this wasn&#39;t in the public domain on reflection&#39;, so it&#39;s still there but it&#39;s no longer publicly visible. If that was sort of one way maybe you could do that – hive it off from the public view, because obviously that functionality is already there because it&#39;s been designed that way already.&quot;

**A, P,** d: &quot;I don&#39;t know If there&#39;s any self-editing, because when I first put a couple of things in, I didn&#39;t exactly like what I put, and when I went back to see if I could edit something, I don&#39;t think I could, I don&#39;t know if they&#39;ve changed it since then&quot;

**A, P,** d: &quot;…helps to look at other things on the platform, when people start to discuss something, I can go back in and edit it [my experience], and then I look at it and go, &#39;that&#39;s fine, I&#39;m happy with that&#39;, I let it go.&quot;

**A, P,** d: &quot;I can always think of an example where I think I wrote something that was okay, and then somebody will point it out to me and I&#39;ll go, &#39;oh yeah, you&#39;re right&#39;&quot;.

**A, P,** d: &quot;…I&#39;ve done those Google-maps things. You preview it before you say, &#39;go&#39;, so you write it, you&#39;re invited to have another look at it, that&#39;s an opportunity to see it there, there&#39;s literally something like a 15-minute window where if you&#39;ve submitted it and you still don&#39;t like it you can go back and edit it. So, the chances of it being viewed in that time are pretty low, or less than that, 10 minutes, 5 minutes, whatever you want, that gives time for it to be self-moderated before it gets posted.&quot;

## Self-moderating the posts you view

**A** , g: &quot;…part of that [moderation] probably would be eventually a categorisation, so that people can essentially avoid what they don&#39;t want to see&quot;

**A** , g: we talked about, &quot;…potentially the way words could be filtered, people who don&#39;t want to see certain things&quot;

**A** , d: &quot;I…think that…even though I&#39;m an adult and…I don&#39;t need filters… sometimes if you know you&#39;re still processing something that happened to you, you might not want to view something on a certain topic at that time, it&#39;s not like &#39;block it forever&#39;, but, &#39;just for now, please don&#39;t show me anything that relates to assault&#39;&quot;

**A** , d: &quot;One of the things that I think might help that and I don&#39;t know if we&#39;ve spoken about it explicitly is being able to filter.&quot;

**A,** d: &quot;I can equally well have bad days, and so for me if I was coming to this [platform], having some ability to say, &#39;okay, today, for me, this topic is triggering for me so I want to screen that off&quot;

**A** , d: &quot;I think some of the successes of the platform will be in terms of how well the moderation evolves, allowing people to self-moderate: I can make a choice today, I don&#39;t want to see this type of post, and…I might want to see it tomorrow…in that kind of way, so that the users aren&#39;t harmed by it.&quot;

###

## Flagging comments

**A, P,** d: &quot;…potentially building in buzzwords that automatically flag [a post] to the moderators&quot;

**A** , d: &quot;I&#39;m assuming users have the ability to flag something if they do find it inappropriate.&quot;

**A** , d: &quot;…collecting data from that [flagged comments] would be a good way to continue editing, moderation, and deciding what is and isn&#39;t okay&quot;

## Rating systems

**A** , d: &quot;…giving, in posts…U or 13+ ratings&quot;

**A** , d: &quot;Potentially [giving posts ratings]

**A** , d: &quot;I wondered if, what [A] was saying earlier about having filters would help with that [moderation for people who have children].&quot;

**A, P,** d: &quot;That&#39;s what we have as a Google Guide, benchmarks: &#39;master reviewer&#39;, &#39;master editor&#39;, &#39;master locator&#39;, and things like that…then I&#39;ve got points: so I&#39;m level 9, chasing level 10, but then it&#39;s always been an incentive to keep me going that users can look at my stuff and they can put likes: &#39;I don&#39;t know if that&#39;s relevant, but it&#39;s quite nice to see the &#39;like&#39;, or the &#39;useful&#39;, because it endorses my love of sharing what I think is useful for someone to know.&quot;

**A, P,** d; &quot;…on Amazon they have helpful/not helpful, and that becomes the basic rating system there.&quot;

**A,** d: &quot;If you do that though [have a helpfulness rating] then there does start to become a higher risk of things happening, although the risk in terms of liking&#39;s lower, and with that you start to build in a level of interaction, and we do know that certain like boxes can be used for kinds of bullying and mass downvoting and things like that, so you&#39;re starting to build in a level of interaction that would be a significant – you know, a legitimate but significant step, change of emphasis, I guess in terms of the platform…I would sort of, I think it would be fine, but just…recognising that that would be a big change.&quot;

**A,** d: &quot;It&#39;s an interesting point I had not considered, but how would you feel if there was a thing to say, &#39;this user sharing this experience was helpful or unhelpful&#39;, people could click there but there would be no display of either – so there would be searches in the background…those risks that you described would be mitigated, but would there be useful research value in having that.&quot;

**A, P,** d: &quot;…the other label that we have on Google Maps is number of users that voted and number of users for review, in different milestones, so I might have a ridiculous picture of a trainer in a shop window, (I mean it&#39;s ridiculous, that many views, so obviously it&#39;s been useful to a whole load of people, or not, we don&#39;t know), but you could have…posts that obviously have got massive views, so whether you can interpret that a moderator can because the content was really, really useful, because it has a solution in it, what could have made something better, and it&#39;s this amazing epiphany somebody has had, and you could use it, cos it&#39;s like the numbers.&quot;

**A** , d: &quot;…if someone submits a hundred postings and then not found to have breached the rules in a malicious way…they could get like a rating – a high – …because you&#39;re going to have different levels of users, and there are going to be some users who are really engaged, and some users who do really need the full ts and cs and code of conduct and best practice and all that, versus, &#39;I don&#39;t know what I&#39;m doing again, sorry&#39;.&quot;

## Recourse policies

**A,** d: &quot;I think that it&#39;s really important in the context of this platform for there to be real, clear recourse policies, so what you need to do to report, I think it&#39;s really important that the user or the person uploading the comment has a say in some part of the process.&quot;

**A** , d: &quot;…if there are real difficulties like that, then it&#39;s important to record people&#39;s responses for the science, but I think there has to be some kind of: &quot;we run this platform, and it&#39;s important for us to follow our own code of conduct, so while we aren&#39;t going to exclude it from the science, we aren&#39;t going to publish it publicly&quot;

**A** , d: [make it clear] &quot;you&#39;re not going to be ignored by science but, so that we can maintain the project that we ultimately own and are responsible for, we don&#39;t feel comfortable having this published publicly because we think it might, you don&#39;t even say why, but it might stop other people feeling like they&#39;re able to contribute&quot;

**A** , g: &quot;…it might not be that they&#39;ve done something maliciously, it could just be a communication issue.&quot;

**A** , d: &quot;…where something falls foul of the moderators and doesn&#39;t get published, the person who&#39;s written it – is there a mechanism for them to change it?&quot;

## **Moderators**

## Who should moderate?

**A, P** , g: &quot;We had a lot of questions about the moderators, maybe the sort of skills and roles and how many of them there would need to be, and what they would need to be&quot;

**A, P** , g: &quot;…it&#39;s a new type of project, a new type of thing, we will need a mix of moderators, who can learn together and also share and develop&quot;

**P** , g: &quot;…we were talking about how it [the platform] would be moderated if there were parents moderating as well as autistic/non-autistic people and how that would work and if that would work moving forwards&quot;

**P, A,** d &quot;…if it&#39;s not an individual reporting it, does an algorithm pick up an offensive word or an offensive comment in a log according to the code of conduct, or is it reliant on other people who have already posted saying, &#39;I find that offensive?&#39;&quot;

**P, A,** d: &quot;I&#39;m a bit confused by the idea of a single moderator operating at any particular point, because any experience I&#39;ve had of moderating anything, is…a shared responsibility&quot;

**P, A,** d: &quot;On…my digital platform…people report things and then you have a group of moderators who make a decision whether to amend something, or remove it, or everybody votes.&quot;

**P, A,** d: &quot;…isn&#39;t it easier having two or three people together doing it [moderating]?&quot;

**P, A,** d: &quot;…a single moderator at any one point doing it by themselves seems a bit onerous for me.&quot;

**P, A,** d: &quot;…obviously I don&#39;t have the answers…a big consideration is the sort of size and amount of comments expected, and I guess if they&#39;re having a lot of comments in, whether it&#39;s possible to have a team, or whether that would slow it down, or whether it&#39;s kind of a reviewed moderation.&quot;

**P, A,** d: &quot;I think there should be more than one moderator definitely, for various reasons, not least because this is a very new thing: the fact that this is still very subjective, the fact that…not one autistic person is necessarily up with all the potential ways the code of conduct could be breached&quot;

**P, A,** d: &quot;…more than one mind, I think, has to be a part of that [moderation], and it has to be a group to be able to deliberate on things and share views&quot;

**P, A,** d: &quot;I don&#39;t know [what happens when there&#39;s a disagreement about moderation]. I&#39;ve always been able to persuade people, if what they wrote that they thought was okay and someone else thought it&#39;s not okay, to see the long term.&quot;

**P** , d: &quot;Who will moderate it then? Who will be the moderator? Will it be actual users of the forum, or will it be somebody else?&quot;

R, _T_, d: Who will moderate the platform is still to be decided

R, _T_, d: &quot;How important do you think it is that the moderators are autistic themselves?&quot;

**P** , d: &quot;…I think there should always be people who have an inside understanding of it [autism], and I just spoke to (A) just before [this session] – off camera so to speak about some of the stuff from your presentation, and there are some things that she noticed that I didn&#39;t.&quot;

**P** , d: &quot;I think if it&#39;s closed off only to people with ASD themselves, it&#39;s already creating an exclusive club, which is not really what we want&quot;

**P** , d: &quot;we want to embrace everybody&quot;

**P** , d: &quot;I would have thought a mixture&#39;s good but with an emphasis that somebody with ASD is always involved&quot;

**P** , i: &#39;…maybe someone would tell [an autistic person&#39;s] …story [on their behalf], and that might be really bad for someone who&#39;s autistic – so having a moderator who wasn&#39;t [autistic], they [autistic people] may feel somebody won&#39;t understand their story, they&#39;ll look at it from a different point of view…

R, _T_, i: &quot;Part of the way I see it is there&#39;s this balance between…resource and the ideal representation.&quot;

R, _T_, g: &quot;…it would be brilliant to have a real large, diverse, panel of moderators look at everything, and at the same time that takes time and resource&quot;.

R, _T_, d: &quot;How do we find…the time and resource where people feel this [level of representation] is sufficient?&quot;

**P,** d: &quot;Would you use moderators of different ages then, is that something as well?&quot;

**P,** g: &quot;…an older moderator…may come across something they&#39;re offended by that a younger person wouldn&#39;t be…so [moderator&#39;s age] could make a really big difference actually to what gets used.&quot;

**A,** d: &quot;…some people will post every day, some will post once in a blue moon, but you could sort of have…I think there are terms that I&#39;ve heard before…a verified or trusted poster.&quot;

**P,** d: &quot;It&#39;s about, are our moderators autistic as well? How they would look at [an experience] differently to somebody who was not – so if you&#39;ve got autistic and non-autistic moderators, would they look at things differently in terms of what would and what would not offend people?&quot;

## Interactions between moderators and users

**A,** d: &quot;[important]…the user understands why their comment was flagged, that they have the opportunity to query that as well&quot;

**A,** d: &quot;I would be quite tempted, if I were you, to say, &quot;no we&#39;re not going to discuss it&quot;, especially if you have autistic moderators.&quot;&quot;

**A** , d: &quot;I just think we&#39;re talking about how not everyone does communicate in the same way, and the idea that that changes what I want to say, that may then be a chance for the moderator to say, &#39;well can you explain again to me what you were trying to say and maybe we can find a way together to help you say want you want to say&#39;

R, _T,_ g: &quot;…people might make mistakes with their language, and a moderator might go, &#39;maybe could you rephrase that?&#39;…they may be very happy to do so, they may be like, &#39;oh yes, shoot, I didn&#39;t know that I didn&#39;t think about that, yes happy to rephrase.&#39; But what [A] is thinking about isn&#39;t, &quot;there might be ones who say, &#39;no, no…that&#39;s my experience. By changing that, you&#39;re changing my experience, or cutting things out&quot;

R, _T,_ d: &quot;I&#39;m curious if anyone has any solutions to that.&quot;

R, _T,_ d: &quot;…to be perfectly honest, I think it&#39;s a very important and difficult piece of process that we&#39;re going to have to put in place&quot;

**A** , d: &quot;[we won&#39;t publish publicly]…for our own reasons, which we&#39;re not going to pretend are…the perfect, most egalitarian reasons in the world, they&#39;re just what we have to do to enable this project to keep going &quot;

**A** , d: &quot;I think it needs to made clear to them [people who have had comments moderated out] …because it could be really upsetting if they&#39;ve been putting all this work into writing this comment that they feel very strongly about&quot;

**A** , i: &quot;…if my dad wanted to share something, my dad hasn&#39;t read a newspaper for years…the chances are that he&#39;d accidentally use something that he had no idea was offensive, but then… if someone said, &#39;by the way, this term is outdated and people find it offensive for this reason&#39;, I can then imagine he&#39;d be like, &#39;oh my god, I totally didn&#39;t know, and I&#39;m not wedded to using it, I can totally now change it to what that thing is now called&#39;, and…you can see what he was trying to express, but equally he hasn&#39;t offended anyone.&quot;

**A,** R, _A,_ d: &quot;...and you think it&#39;s fine that if they submit something the moderators don&#39;t agree with, that will then be flagged to the person who submitted the post?&quot;

**P, A** , d: &quot;It&#39;s a more generalised approach to say, &quot;what could be better?&quot; This is where you&#39;d obviously put the positive in.&quot;

**P, A** , d: &quot;What we do on &#39;Next Door&#39; is… when enough people…vote…[to consider removing a comment], usually the person is contacted and invited to amend it themselves&quot;

**P, A** , d: [when people amend comments themselves], &quot;then it&#39;s acceptable…and there&#39;s a learning process, and the person finds out it&#39;s not acceptable and maybe the reasons why, and then there&#39;s no question about that… rather than it kind of just goes, and the person feels like there&#39;s no point in posting anything else because it always gets removed.&quot;

**P,** d: &quot;Would a moderator have the right or the permission to go back to the person who&#39;s put something up, and say, &quot;look, can I help you put that in another way that we could then help you put that on the forum…?&quot;

**P,** d: &quot;[giving feedback] takes time&quot;

**P,** d: exactly yeah – it&#39;s really hard to get that right

**P,** d: &quot;If a comment was moderated though, what you could say to a parent is why: the input is really important, but you need to take the personal out of it; you could explain that the content&#39;s the really important part, but the actual emotion isn&#39;t - it&#39;s not the right format.&quot;

**P** , i: &quot;…you [the moderator] might go back to the person who&#39;s put the post and she might say, &quot;no, I put that because I am pissed off with the way someone treated me at school, so I don&#39;t need someone to make it sweeter.&quot;

**A,** d: &quot;…because I&#39;m coming from a kind of operational thing, how many posts are we gonna get a day, a week…? While I would like a high level of touch from a moderator, is that really possible? I suspect not.&quot;

**A, P,** d: &quot;What [A, P] and I were talking about at the very end of the last session was…moderation has been given to someone, and you say, &quot;do you really mean this, this may have come across in such and such a way? Would you like to revisit it? Would you like to amend anything?&quot;

**A, P,** d: &quot;Yeah, to be able to communicate that in a way that doesn&#39;t sound critical, but sounds kind of a more open process&quot;

**A,** d: &quot;I think what you said [A] about being able to edit changes, I think you have to be careful to show a level of transparency where changes are being made, because I think that…engenders change…without understanding the underlying reason why.&quot;

##

## Moderator training and guidelines

R, _T,_ d: &quot;I think part of the guidelines needs to say, &#39;we&#39;re not going to edit people speaking about themselves&#39;, but may put back as the moderation, &#39;if you&#39;re feeling frustrated because of the actions of somebody else, this is not the place to capture that, and here are some good resources, here are some good places where you can go and support that purpose.&#39;&quot;

**A,** d: &quot;…what if you want to say something on the forum and the moderator ends up having a bias against what you write in any way whatsoever? What if the moderator decides to take… a borderline extreme exception to what you write on this particular form, so what would the process then be if you think the comment is unfair or has been unfairly censored?&quot;

R, _T,_ d: &quot;…I&#39;d quite like to generalise that question to say, &#39;how do we ask our moderators, who are human beings and likely going to be autistic human beings, to be perfectly consistent in all of the decisions they make?&quot;

R, _T,_ d: &quot;How do we come up with guidelines to be able to respond to examples like that: where there&#39;s a disagreement with the person?&quot;

**A, P** , d: &quot;…so there&#39;s an element of mindset there of the moderators too&quot;

**A, P** , g: &quot;…we&#39;ve been making huge assumptions to think the moderators have all the skillsets to really know when language can be harmful, or there&#39;s a problem&quot;

**A,** d: &quot;I think there will need to be empathy of that situation, where it isn&#39;t somebody being bad, it has to be a two-way process&quot;

**P, A** , g: &quot;It does take a bit of longitude to get an understanding of whether something is ableist or stigmatising, or harmful, or to know certain language would go against the human rights ethos that we&#39;ve come to expect, so there&#39;s a lot of getting up the curve for anyone.&quot;

**P, A** , d: &quot;I think that part of the moderator&#39;s skillset will be not just saying, &#39;that doesn&#39;t meet this, sorry&#39;, but to be able to work with the person, with a workable solution…maybe just tweaking the language … it may just be lack of experience of the person who maybe wrote the post, and without that advice on how to word it in a much better way, potentially there could be valuable input on that forum not happening.&quot;

R, _T_, d: &quot;…make understanding anger and allowing swear words part of the training…of moderators.&quot;

**P** , d: &quot;that word &quot;facilitate&quot;, is really key&quot;

R, _T_, d: &quot;It&#39;s hard…scaling from a group where you can individually facilitate, to …an online website [which] anyone can access&quot;

**A,** d: &quot;I think how we view it also involves the perspective of somebody who&#39;s doing something wrong, I think that has to be empathetic to everybody involved.&quot;

**A,** R, _A,_ d: &quot;Yep, I&#39;d imagine there&#39;d be a lot of training needed around that.&quot;

**A** , d: &quot;I used to be one of those people that was like, &#39;oh no, I couldn&#39;t take it if someone disagreed with me, end of&#39;: I&#39;d want to get rid of them, but as I&#39;ve grown older in life I&#39;ve…got more disciplined with it&quot;

**A,** g &quot;…there can be ways for people to civilly disagree with people… and yes, you can have differences, and you can disagree with someone. and still remain civil on these sorts of forums.&quot;

R, _T,_ d: &quot;I&#39;m curious how to tell apart something that&#39;s a civil disagreement that&#39;s quite polite and reasonable and something that&#39;s less polite and goes too far.&quot;

## **Risks**

**A** , d: &quot;…on balance I think it would be good to do some stress testing to see what is the worst thing that could possibly go wrong with this platform.&quot;

**A** , d: &quot;I deal a lot with people&#39;s worst impulses and behaviours, and it always takes my breath away in terms of how people find ways around the best thought-out systems.&quot;

**A** , d: &quot;…it would be really good to think about, what&#39;s the worst thing somebody could possibly do, and what&#39;s the worst thing that could possibly go wrong? If everything goes wrong…what&#39;s our worst nightmare… I would definitely advise thinking about that in terms of this platform, because it some ways you don&#39;t expect the worst, so that would be my advice as well.&quot;

**A** , d: &quot;I think there&#39;s no perfect scenario to preventing harm or risk, you can&#39;t eliminate that in relation to this issue, but one thing you might want to consider is including behavioural nudges, so, for example, things that come up saying, &#39;are you sure you want to post that&#39;, encouraging people to think more carefully before they click send, and building that into the website, encouraging people to take a step back.&quot;

**A** , d: &quot;That actually makes more sense, at any stage of the process, just literally ask, &#39;are you sure what you&#39;ve said is fully appropriate and you want to post it and blah blah blah, you know.&#39;&quot;

R, _T_, d: &quot;It&#39;s hard…scaling from a group where you can individually facilitate, to…an online website [which] anyone can access.&quot;

**A** , d: &quot;The kind of rapid response and deterioration of other posting sites like Reddit or social media doesn&#39;t seem to me like it ought to be a kind of thing that plagues the system if people understand what it&#39;s for.&quot;

**A,** R, _A,_ d: &quot;…editing on some platforms, say Twitter for example, has caused lots of problems in terms of not wanting to change the core content of things after it&#39;s posted. So, there would have to be, I guess, checks in place so that it doesn&#39;t get abused in a way.&quot;

**A,** d: &quot;That&#39;s why I think, not only from a quantity point of view I think you&#39;ve got to have it, but for the moderators as well I think you have to have some level of moderation from tick-boxing, grouping, tagging, categorising and all that, to try and encourage someone to put an effective post up&quot;
**A,** d: &quot;…if you&#39;ve got everyone just dumping, even with the best will but doing it badly, then the moderators will just be drowning in it&quot;
**A,** d: &quot;…going back to the presentation, that post that [R] talked about there, back in the supermarket, the first one is what you want to see, but the bottom one is…the worst version of the same event.&quot;
**A,** d: &quot;The last line of defence is the human brain, I think – to protect the moderators&quot;

## Platform becomes too interactive

**A** , g: &quot;… in terms of what could go wrong I think that we agreed that there&#39;s risks in most online forums and social media platforms&quot;

**A,** d: &quot;You&#39;re sacrificing…all the social media – there are no comments, which, obviously makes it safe, but it potentially stops a marginal post, or something that might be deemed really in the fine margins of whether it should be allowed or not, it can&#39;t deteriorate as I&#39;ve seen so many other social media posts deteriorate.&quot;

**A** , d: &quot;It doesn&#39;t seem to me to be like a Reddit thread that could run out of control. It&#39;s not a message board, it&#39;s not Twitter, it&#39;s not something that people can comment on&quot;

**A** , d: &quot;You are sacrificing all the social media – there are no comments, which, obviously makes it safe, but it potentially stops a marginal post, or something that might be deemed really in the fine margins of whether it should be allowed or not, it can&#39;t deteriorate as I&#39;ve seen so many other social media posts deteriorate.&quot;

**A** , d: &quot;…I think that a lot of the negative feedback you can get, this site isn&#39;t going to have that – so I hope that that would move people away from the unhelpful venting.&quot;

**A** , d: &quot;…my hope is that this platform…it&#39;s not a back and forth.&quot;

**A** , d: &quot;…there&#39;s no potential gratification from me commenting back, so I don&#39;t know if I&#39;m over-emphasising, but I wonder if this will change how people will use [the platform].&quot;

**A** , d: &quot;I think there&#39;s a fear with that, that people might think that they won&#39;t get any questions so they can write whatever they want as well. It has a flipside to it not having responses.&quot;

**A,** d: &quot;[A] made the point about there being a lower level of risk, obviously because there isn&#39;t that level of social interaction you would normally expect on a forum or a social website or something like that. However, it would be good to test that – and I think that&#39;s down to the design of the platform.&quot;

**A,** d: &quot;…if, for example, the posts are…laid over each other sequentially, one under the other, but actually it could have the appearance of a forum, because people could see the comment below and decide to interact with them. I don&#39;t think the level of risk would be that high if it was properly moderated, but it might be worth just thinking about the presentation of the platform, and having a forum-style sort of responding, for example someone wouldn&#39;t like a comment and they would respond aggressively to that comment – whether that sort of situation could arise.&quot;
**A,** d: &quot;…you can see the other comments though: if a comment is uploaded onto the platform, you can see the comment, so there might be an impulse to respond to something that people see and don&#39;t like&quot;

**A,** d: &quot;I don&#39;t know how the design will work though, because if it appears in a forum-like way: if it&#39;s set up in a forum-like way, then people might be like – &#39;oooh, I don&#39;t like that, I&#39;m gonna have my say&#39;&quot;

**A,** d:: &quot;…you could get someone going on there, posting, and some really upset autistic person could go on and say, &quot;I&#39;ve just been to a website and saw a post which really upset me&quot;, someone will cleverly find a way to join the two, yeah you&#39;re right&quot;
**A,** d: &quot;…that would put a lot of pressure on the moderators if they get inundated with that sort of thing.&quot;

## Public posts causing distress to users

**P,** d, i: &quot;…one of the main issues I think which crops up…I don&#39;t want to go on a forum and, if you like, from a parent&#39;s point of view whinge about how bad my life is, [and for] my child to hear that, and then to feel that she&#39;s done something wrong&quot;

**A** , i: &quot;…I think it is definitely important to protect, particularly those who may not naturally see those effects [of their autism on others], from discovering them, and then feeling that way [guilty]&quot;

**A** , d: &quot;I think some suggest that mental health issues are a symptom of autism, so there&#39;s going to be people who will want to write very personal stuff, and we were… discussing, what is the safest but the most open way to deal with those posts? and how to prevent people from reading something that is potentially traumatic and yet still making it available to researchers to see.&quot;

**A** , d: &quot;[people might] …for example use different language, different terminology, have different ways of communicating, and that might be quite upsetting for another person&quot;

**P, A,** d: &quot;In that list of things that might be offensive, that might trigger people, I think &#39;placeism&#39; isn&#39;t there.&quot;

**P, A,** d: &quot;People might actually mention a specific place like a day centre they attend or a particular council support or something if they…have a very bad experience, but other people could have a very positive experience of that place.&quot;

**P, A,** d: &quot;…they&#39;re [people who are spoken about] not there on the platform, they&#39;re not able to defend themselves&quot;

**P, A,** d: &quot;if other autistic users or others who potentially put a post in feel…&#39;that&#39;s not my experience&#39;, [they may] feel it&#39;s invalidated because, &quot;if they&#39;ve just said all that then what can I say&quot;, and they may not even want to say anything&quot;

**A,** d: &quot;…my concern would be that if somebody was in a similar situation to me: they were getting in trouble at school, they thought that they were bad, but their parents kept reassuring them, and then they come online and they find that their parents are writing something negative, I feel like that could be detrimental to the way that person sees themselves for the rest of their lives&quot;

**A,** d: &quot;It strikes me that the issue, you know, you were talking about what if somebody uploads something which is, say, for example, a parent uploading something and then…it could be quite difficult or upsetting for a child, even if it was meant well&quot;

## Responses to moderation causing distress

**A** , g: &quot;I think it could be really, really upsetting for some people if that happened [their comment was moderated out].&quot;

**A** , d: &quot;…my experience was that I was dubbed as &quot;bad&quot; throughout education. You know, you don&#39;t want a child going through that and then coming home and seeing that their parent thinks the same thing, or assuming that their parent thinks the same thing because of something their parent has said.&quot;

**A,** d: …Facebook, they&#39;ve got all the money in the world, and a lot more money than you guys have, and they still haven&#39;t sorted [the moderation process]&quot;

**A,** d: &quot;…I imagine that, just knowing we have social media companies, I don&#39;t want to get into the politics, but if you look at social media companies who are hugely profitable, and what they&#39;re doing around potentially harmful content, I don&#39;t think this platform will have anything near that budget to help mop up any of the genuinely unintended consequences of a potentially triggering post&quot;

**A** , d: &quot;…we hope that people are going to become more open-minded over time, but things are also going to – political correctness is also going to get tighter&quot;

**A** , d: &quot;Some of the experience is maybe quite upsetting.&quot;

**A** , d: &quot;How personal is this going to get [the experiences on the platform]? Because there may be people who are writing about abuse, or are writing about suicide attempts. Those are then triggers for others&quot;

**A** , d: &quot;…if I was to think that those two people [my parents] who always could see me for who I really was, were suddenly saying the opposite, then I do think it would have a profound effect&quot;

**A** , d: &quot;…my worry is that once someone makes a comment or discusses a situation…there&#39;s no control over who [or] how many people consume that content, and what effect it has on them.&quot;

**A** , d: &quot;Yeah, I can see that as well&quot;.

**A,** d: &quot;…the issue is if you have had a bad day, you&#39;re already stressed out, and you go onto this online platform where you&#39;re meant to be able to vent, and you suddenly see that your parents say that you&#39;ve ruined their day, that&#39;s going to make you feel bad, personally. It&#39;s not about the community, it&#39;s about the individual that will be affected by their parents saying stuff like that.&quot;

**A** , d: &#39;…if I was to see that at the age of 25 [parents&#39; frustrations], that would knock my mental health down the road, because I still feel guilty&quot;

**A** , i: &quot;Well, that&#39;s a question actually about how is the person, in particular the child, actually going to know about it? Because chances are when their children are under 5 years old [they won&#39;t be able to read about their parents&#39; frustrations]&quot;

**A** , i: &#39;I live at home, I still have meltdowns at the age of 25, but there are some people who may still be high-functioning and be able to use this site but may not be emotionally high-functioning so they don&#39;t see that effect on their family, so they could then come on this site and see their parents saying the emotional effect, but they would be totally oblivious&quot;

**A** , i: &quot;they [&quot;low-functioning&quot; autistic people] would see that, yes, it [a meltdown] meant that we had to come home early, but that&#39;s all that meltdown caused until they see that [an experience], and then they&#39;re dubbed as bad by their parents.&quot;

**A** , d: &quot;…if you…see that happening [people talking about suicide or abuse on the platform], would the moderators take action to make sure that person is okay?&#39; Because if someone is literally saying, &#39;last week I tried to kill myself&#39;…and they&#39;re putting that on a public place, that could very easily be their call for help, and that needs to be responded to.&quot;

R, _T,_ d: &quot;I think that these are really wonderful points [about posts concerning suicide and abuse], and I think I&#39;m making sure that our process…gets in touch with somebody who is maybe looking for help or needs support.&quot;

R, _T_, i: &quot;My feeling is that…making those experiences [about suicide or abuse] public probably does more harm than good, and so I would suggest taking a position where we get back in touch with the person who wrote it, but we don&#39;t make that post available.&quot;

**A** , d &quot;I find that a bit troubling [censoring posts about suicide and abuse]…I understand the purpose of it.&quot;

**A** , d: &quot;I would imagine that there&#39;s probably a situation where the resources don&#39;t allow it [the platform] to become a kind of emergency service&quot;

**A** , d: &quot;If those things do come up [around suicide or abuse], then there ought to be an opportunity to have people express what they&#39;re trying to say, but in a position where they&#39;re not feelings right on the edge of something dangerous.&quot;

**A** , d: &quot;I think it would be good to…set the expectation that, if you are desperately in need of help, submitting a blogpost for moderation on this platform is probably not the most direct way of getting it.&quot;

**A** , d: &quot;…obviously there should be places where it could be flagged that if you do need that kind of [urgent] support here&#39;s where you can get it.&quot;

R, _T_, d: &quot;How do you give feedback on someone&#39;s experience [taking into account] that person who said, &quot;it&#39;s my experience –&quot;?&quot;

**P** , i: &quot;[The person who has content moderated out] might just be someone who&#39;s very frustrated, and they might just say, &quot;…I&#39;m really upset, I&#39;m really angry…&quot;, because a lot of the time it&#39;s just getting rid of anger&quot;

**P** , i: &quot;…it might put people off using [the platform] again, and getting that truth again because after they have been moderated, maybe some people wouldn&#39;t do&quot;

R, _T_, i: &quot;…that&#39;s a good point&quot;

R, _T_, g: &quot;…there&#39;s so many different dimensions to a person that might mean that they might have a different subjective response&quot;

## Venting

**P** , d: &quot;…parents need to vent, in the same way that everybody needs to vent – but you need to do it in a private way so you&#39;re not purposefully making somebody feel bad about themselves.&quot;

**A** , d: &quot;… one of the things that makes me feel the worst is this idea that it&#39;s the platform for venting.&quot;

##### **A** , d: &quot;…it seems really strange to me that that&#39;s the way that people would see it, and that there&#39;s a real burden on the researchers to make sure people are aware that this is not a place to come slag your child off, this is a place to research how to make things better for people&quot;

**A** , d &quot;…it&#39;s a collection of uses for research, and if that is emphasised in the correct way, I think you can avoid anger and issues like that.&quot;

**A** , d &quot;…perhaps the way to deal with that would be to have a way to direct users to forums which do respond if they want to vent and they do want to get support.&quot;

**A** , g: &quot;…if it&#39;s clear that that [venting] isn&#39;t what this site is for, then it becomes less of a potential problem I think, and for me I think that&#39;s what we need to emphasise – it&#39;s that this site is about collecting information for research, not venting.&quot;

**A, P,** d: &quot;Yes, we&#39;ve got platforms all over the place where parents go and vent and moan, and aren&#39;t particularly compassionate towards this disabled person&quot;
**A, P,** d: &quot;…it&#39;s either going to be another platform that can fuel the negative narrative, the deficit, the medical model: the ideal…is not to be disabled, and we can cope with that in society, but disability is a nuance, an imposition, makes things less human, and we can platform that narrative too – and that&#39;s the one thing that we can&#39;t do.&quot;

**A** , d: &quot;putting links to people that can answer questions, or links to actual forums where people do actually respond, is key to preventing people from coming on for the wrong reasons, ranting, and not getting any response, or whatever.&quot;

**A,** d: &quot;I think it&#39;s really important, and it&#39;s troubled me that people have talked about the ability to vent, it seems completely inappropriate to me that this would be a space for people to come and vent&quot;

R, _T,_ d: &quot;Thank you, I think that&#39;s really interesting, this kind of difference between policing emotion and not being a place where people can just vent – and balancing that is a difficult one.&quot;

**P** , d: &quot;I don&#39;t think there&#39;s a place for venting within that main place to post. I think yeah parents do need to vent, but it shouldn&#39;t be in that forum: the emotion should be kept out of it. There should be a place to vent, 100%, but I don&#39;t think that&#39;s the place for it, because I think it just becomes emotional instead of actually what you&#39;re trying to get out of it.&quot;

R, _T,_ d: &quot;How do you make a rule for when something is venting, vs. when something is just saying that you have a response to a situation?&quot;

## Libellous posts

**A, P** , g: &quot;…somebody might identify a location, a play centre or a building, or decide the person that operates within a building [has done something wrong], and criticise it almost libellously&quot;

**A, P** , d: &quot;perhaps you&#39;d like to have that taken out [specific places] because, for instance, I wouldn&#39;t flag out to the National Autistic Society as being awful or something, because that&#39;s so co-dependent on other people.&quot;

**P, A,** d: &quot;If it&#39;s [a place is] named, as if you were naming someone and potentially libelling them, I think place libelling can be brought.&quot;

**P, A,** d: &quot;It&#39;s different having a go at London Transport or a hospital ward or something that&#39;s very generalised, but if you&#39;re going after a specific doctor, or councillor, or place that you use, then that could cause a real issue.&quot;

## Vexatious or malicious posts

**A,** d: &quot;There are situations in which I can imagine there might be somebody who doesn&#39;t interact with the platform in a sensible way, or in a potentially malicious way, so they might send lots of vexatious posts or something over a short period of time, at which point there probably should be…thought put into whether there needs to be policy around that.&quot;
**A,** d: &quot;I can imagine the situation in which…you might want to pick up the malicious posts or the &#39;not-taking-it-seriously&#39; posts, so that&#39;s…one scenario&quot;
**A,** d: &quot;I think there&#39;s a way that people could abuse that if what people are uploading are vexatious, are not engaging with it sensibly, or yeah, not with the right motives.&quot;

## Posts becoming too open-ended

**A** , d: &quot;I think if you have an open to just write whatever you want, about any experience you want, over your whole life, what people are going to think about most are the injustices which inflame some of the most unhelpful responses that we&#39;ve discussed&quot;

**A,** g: &quot;…if you ask a specific question, they [contributors] might think, &quot;yes, I did have an unpleasant experience at a train station,&quot; or, &quot;when I got to university this is how I found the library extremely inaccessible to me&quot;: it might make people think about specific things rather than what is burning theme up inside in this one moment.&quot;

**A, i** : &quot;…if everyone is just writing – when you&#39;re looking for a very specific quote, like an academic in a library…you&#39;re looking for a very long time to find a specific quote. I suppose researchers are only looking for specific situations, it&#39;s going to be hard to go through all of that prose just to find what you&#39;re looking for, and that&#39;s why from the start I suggested categorisation&quot;

**A,** d: &quot;if you&#39;re talking about a particular type of situation, a type of sensory overload…that&#39;s definitely something to think about&quot;

## **Research fidelity/scientific validity**

**A** , d: &quot;…what I would take away is that, in terms of…a lot of the research, as [A] was saying, a huge amount of the research is primarily quantitative, and I think there&#39;s a huge amount of temptation to see this as someone autistic as being the subject of research interest&quot;

**A** , g: &quot;…we [A and R] were both in that thing, that slightly weird research thing, looking at the origins of autism, and the guy said it was basically like a medical condition, no different to obesity or something like that. I think that was pretty offensive and fails to capture the diversity and the benefits of autism and neurodivergence.&quot;

**A, P** , i, d &quot;…you [R] mentioned that the majority of funding does go into the science of autism, and I think that&#39;s really where the issue of all of this is, and although this is a really good step towards changing that…it&#39;s not about finding a cure for a condition, it&#39;s about finding the best possible way for people to live with it&quot;

**A, P** , d: &quot;…hopefully projects like this will be the first step towards moving research away from just looking at the science, and start looking at the experiences as well, because it really should be 50/50&quot;

**A,** d: &quot;…that is why there is so little qualitative data, because you know you can&#39;t write your opinion on somebody&#39;s biology – it is fact&quot;

**A,** d: &quot;I think this a great stepping-stone, but I can see we need to keep pushing for more projects like this.&quot;

**A, P** , d: &quot;I think that&#39;s another really big message to get out there…that there&#39;s more than one sort of data, and that includes the lived experience and the feelings of autistic people.&quot;

**A, P** , d: &quot;…too often…how autistic people will explain, and often their perspective, is almost discarded straight away – it&#39;s considered &#39;not relevant&#39; for data. You can&#39;t see it, you can&#39;t measure it, so it doesn&#39;t count as data.&quot;

**A** , d: &quot;…when I did my research, my main one thing I did notice was the lack of qualitative research.&quot;

**A** , d: &quot;…finding new ways to do research with people that are autistic is something that&#39;s always been at the forefront of my mind, as something that I&#39;d really like to try and get into.&quot;

**A** , d: &quot;…it&#39;s really exciting to see a project that&#39;s totally thinking outside of the box and taking that route that I&#39;d have liked to take, but from a totally different direction.&quot;

**A** , d: &quot;it&#39;s reassuring as well to see that I&#39;m not the only one who&#39;s noticing these gaps in research, that there are other people who are thinking about it.&quot;

**A, P** , d: &quot;…we didn&#39;t mention this, but I&#39;ll mention it as part of this [sharing discussion] … make some guidance how people could input their stories that would make the information more useful for a researcher.&quot;

**A, P,** d **:**&quot;…it would be a shame if somebody shared a story, and we thought, &#39;ah, it would be so useful, if only they&#39;d included this or that we could have used it in a much better way.&#39;&#39;&quot;

**A** , d: &quot;…we need to balance then, obviously the need for it to be authentic and to be useful for research purposes, but also the need for the space to be as safe as possible&quot;

**A** , d: &quot;…the way that I&#39;ve understood it is that people who are gonna do research based on specific situations and specific sensory issues, in the same way a conference does for papers, will you do a call like? Like, &quot;we want to know your experiences of train stations&quot;

**A** , d: &quot;…there&#39;s loads of different types of research, which is…what we&#39;re discussing now; loads of different research topics. Would the site have access to seeing how many people have read each post, and could that then be used as data to see what is most popular?

**A** , d: &quot;What kind of analytics are you going to get from site usage, how would maybe be used?&quot;

R, _T,_ d: &quot;…we don&#39;t have plans to implement that [analytics analysis from site usage] just yet, because…there&#39;s a whole set of other ethical questions that come with [surveillance analytics]

R, _T,_ d: &quot;there&#39;s also a big element around, &quot;what does it mean to be popular?&quot; …just because something is popular, doesn&#39;t necessarily mean that it&#39;s the most important thing, so I think that I would personally say that&#39;s out of the scope of what we are trying to achieve with this project.&quot;

R, _T,_ d: &quot;…I very much hope that people will want to extend it and work on it in different dimensions, and be able to take that advantage forwards&quot;

**A,** d **:**&quot;…because this is a research platform as well, a lot of the information that is collected will need to be…accurately representative of how people are feeling and some of the experiences that they&#39;ve had.&quot;

**A,** d **:**&quot;it&#39;s supposed to be a…scientific project that gathers people&#39;s real experience…to censor that stuff because it&#39;s difficult to read, also means that you&#39;re then removing what is also a real part of people&#39;s experience, and that – even if it might be difficult - doesn&#39;t sound like it&#39;s good science.&quot;

**A,** d **:**&#39;…as (A) said, if this is a scientific project about potentially trying to capture this information. It&#39;s undermining the scientific rigour of it if people are just talking about the birds and the flowers outside…&quot;

**A,** d: &quot;I can see why doing [posting] stuff that is excessively sensitive may not be honestly a good idea, but if we&#39;re still trying to find a focus on this idea that it all has to be available to research, for example, an archive section available only to researchers, where blogs that weren&#39;t allowed to be posted for moderation are still accessible, would resolve that issue. I mean they would all still be on the system…so making it only available for researchers would mean that users wouldn&#39;t get upset or triggered, but it would still be able to be used for good.&quot;

R, _T,_ d: &quot;It&#39;s quite nice that you said that [about non-public posts still being accessible to researchers], because that is actually part of the design of the system…people can choose to either share their experience just for research purposes so it doesn&#39;t go public, or they can share their experiences publicly, and actually if they want to they can say, &#39;I only want to post it publicly, I don&#39;t want it to be used for research&#39;, and I think that&#39;s catering towards people who have a mistrust of researchers but want to keep in touch with their community.&quot;

R, _T,_ d: &quot;…what I really like about where this conversation is gone, is that if we keep for research purposes posts that did not pass moderation, it allows us to reflect on the difference between the posts that do and the posts that don&#39;t, and we can sort of loop back to what (A) was saying earlier, that we may have to change our moderation processes as we go along, but if we&#39;re making sure to keep the ones that we don&#39;t post publicly, that allows us to do that process&quot;

**A,** d: &quot;The majority of it [autism research] is quantitative, which is statistics.&quot;

R, _T,_ d: &quot;…studies tend to look at one community of people…with particular skills and not another. So, there might be a lot of research into people with complex needs, but they don&#39;t tend to be doing the same things or being part of the same studies as the studies that look at autistic people that can engage more broadly with the world – &quot;.

R, _T,_ d: &quot;…with our perspective as researchers, we would like to build a project that doesn&#39;t exclude either group [those with and without complex needs] – so that actually people can engage with it very broadly – and we may not succeed but I think the goal is to try the best we can…&quot;

**A** , d: &quot;…that&#39;s a good clarification and something that excites me to be honest&quot;

**A** , i: &quot;…with qualitative stuff, and…there was an example about making the transport network more accessible…are the answers not going to be quite different for people who have low support needs and people who have more complex support needs…so wouldn&#39;t it make sense to have…different studies?&quot;

**A** , d; &quot;…why would you have to shove everyone in one [study], so long as you were making sure you were looking out for both groups of people, or multiple groups of people?&quot;

**A** , i: &quot;I suppose that probably comes down to funding [why you would address different groups in one study], like if you&#39;re trying to look at both that&#39;s probably going to come down to funding to do two separate research [projects] on one topic&quot;

R, _T,_ d: &quot;…where you draw the boundary between the two studies [about people with different subtypes of autism] is a bit of a very artificial separation, and it&#39;s missing the complexity of this constellation, these…multiple dimensions…and so having the researchers choose a separation is potentially quite an artificial way of customising projects&quot;

R, _T,_ d: &quot;…if we can&#39;t find a way that works for everyone, we may end up doing something like that [breaking up the study]&quot;

R, _T,_ d: &quot;I don&#39;t think it&#39;s a foregone conclusion that separating people into two separate studies is easier to do.&quot;

**A,** d: &quot;I think if you&#39;re researching a specific area, then you need to be able to find just what&#39;s written about that specific area – &quot;

**P, A,** d: &quot;While you&#39;re doing this platform, investing in all this, use it for the maximum possible, so it&#39;s giving qualitative data to the researchers and providing a good forum for autistic people to understand about strategies as well.&quot;

**P, A,** d: &quot;It&#39;s very important to not just say, &#39;tick an autistic or non-autistic&#39; box: [it] has to be autistic, formally diagnosed, or self-identified, otherwise the research information is not very useful.&quot;

**P, A,** d: &quot;So this case, even the one the autistic person has drafted, the way the researchers read it, &#39;flickering lights is a problem&#39;, and yeah it&#39;s true flickering lights [are] often a problem, but we don&#39;t know that here. Okay, you can always jump into the most likely answers as an explanation without actually knowing, so it would throw out the research terribly even if the autistic person is speaking for the other person, you know for them…&quot;

R, _T,_ d: &quot;so that is a point of the platform, that we collect together lots of things and we&#39;re able to reflect commonalities and differences&quot;

**A** , d: &quot;I do fear that we are trying to create two projects in one. And that the content for one may not be the content that others would post for the other.&quot;
**A** , d: &quot;…there&#39;s either the public, and research does not quite tie together perfectly, and I don&#39;t know if that&#39;s just the articulation or that&#39;s just the stage that we&#39;re at with the project or what, but I think that something&#39;s missing if that is going to work.&quot;

**A, P,** d: &quot;I think an information collection/sharing position that this information is being used for research, but why just keep it for the eyes of the researchers…it&#39;s akin to an autistic blog in a way&quot;

R, _T,_ d: &quot;The thing that I wanted to maybe just dig into a tiny bit more is: …we did talk in a different breakout room about the fact that this platform is for research.&quot;
 R, _T,_ d: &quot;…[PA], I think that you articulated really beautifully why the point of the platform is not just to send experiences to researchers who will, over in their own space, do something with it&quot;

**A,** d: &quot;…at least for me, I think, avoid those negative discussions that we were talking about previously in our previous groups…the idea of really emphasising what this platform is for isn&#39;t just venting, it&#39;s for research.&quot;

**A,** d: &quot;…you&#39;re obviously going to have a free text field at some point, where people can put whatever they want out of their brain, and I don&#39;t want to moderate that at all, because I think that it defies the purpose&quot;

**A,** d: &quot;…asking both the person who&#39;s writing it, and the moderator, to go, &#39;what&#39;s this about?&#39;&quot;

**A,** d: &quot;…you worry if you&#39;re too specific, every comment is unique and there&#39;s no pattern, whereas if you can just pitch it at the right level whereby – and again this will be, I imagine by trial and error, but you get to a point where you can start aggregating different comments by different types, which is what the researchers are trying to do, to pick out common themes, you know, what&#39;s troubling people.&quot;

**A,** d: &quot;…if the point of the research is so that it can go to people like the transport network, then it&#39;s less important how someone&#39;s meltdown felt [to you] or how it affected your day or whatever, and it&#39;s more important to think about, how do train stations be different so that this is less likely to happen, or easier for everyone to cope with if it does happen?

**P** , d: &quot;…particularly for research…it needs to be the facts&quot;

## Sensory processing research

**A, P** , d: &quot;They&#39;re [people online] claiming autistic people&#39;s responses to sensory difficulties are learned and behavioural.&quot;

**A, P** , d: &quot;It&#39;s a huge, huge, issue, not helped by the fact that the ICD 11 doesn&#39;t even mention sensory, so when the DSM 5 came out, it did mention it, not as a core criterium of autism because non-autistic people can have sensory difficulties too, but to acknowledge that there may be sensory differences and that might give rise to repetitive behaviours and things need to be a certain way, but that wasn&#39;t even in the ICD 11&quot;

**A, P** , d: &quot;[not being a criterium in the ICD 11] fuels the lack of empathy and understanding as well, so projects around sensory issues are really, really important to garner that kind of understanding.&quot;

**A, P** , d: &quot;…the sensory was highlighted as a priority by autistic people. Is this the one type of research happening, or is there other research looking at the more biological aspects of it?

**A, P** , d: &quot;…there&#39;s a link between potassium and sensory overload in some people&quot;

R,_T,_ d: &quot;I could answer very quickly that there is a lot of funding that goes towards looking at the biology of autism, including sensory processing, so that actually tends to be where resources are directed, is the biological aspects of autism&quot;

**A, P** , d: &quot;It was sensory specific, because I&#39;m quite aware that a lot is going into looking for the autism gene, the very elusive autism gene?&quot;

R, _T_, d: &quot;…there are studies on the biology of sensory processing, and there&#39;s quite a lot of lab-based studies as well…what it&#39;s really missing is how it impacts on people&#39;s day to day lives and told from their perspectives.&quot;

**P, A,** d &quot;…is this it? Sensory is one of the key problems…is this the answer or is there anything else going on about it as well? For example, understanding maybe the biology about it?&quot;

**A,** R, _A_, d: &quot;There is a lot of ongoing research about sensory issues beside this project&quot;

**A,** R, _A_, d: &quot;…when someone says…&#39;put your panic on a linear thing, 0 is no panic, 10 is panic&#39;… that&#39;s just on a line, if you put that as a body, where does that panic start, where does it move to, does it go back, does it journey – I think that&#39;s more meaningful. You know, a lot of researchers or psychologists often put this thing of measurement in these lines, and you know that kind of thing and temperature things and whatever. Because we&#39;ve got this weird thing of the weirdly wired brain and the body that lets us know that we&#39;re in distress, it&#39;s how you marry the two in a way that people can relate and go –&#39;well I&#39;m experiencing this. This is happening in this part of the body, and that&#39;s happening there –&#39;.&quot;

**A, P** , d: &quot;…there are aggressive fields out there on social media that are claiming they&#39;re [sensory processing differences are] not even real.

##

## **Research Methods**

## Process

R, _T_, d: &quot;I encourage everybody to write things down&quot;

R, _T_, d: &quot;I want to finish for lunch on time because it&#39;s a big day that you&#39;re spending with us so I want to make sure we can keep you fed and rested.&quot;

R, _T_, d: &quot;[R]]&#39;s great December is going to be to transcribe the workshop and to transcribe the breakout rooms that we had, so thank you to R that&#39;s going to be a lot of work, she&#39;s going to listen over and over to make sure she has your comments captured – and probably in the new year: it takes a while to do the transcriptions, we&#39;ll circulate summaries, so we try to anonymise some the quotes, so you&#39;ll probably recognise yourself but you other people shouldn&#39;t be able to recognise you, and we&#39;ll give them to you for review, so you&#39;ll be able to review that so if there&#39;s anything you do recognise and you think is inaccurate or that you don&#39;t want to be made publicly available, and then after that our work is to keep on keeping on keep building the platform and keep on embedding the some of the ideas, the warnings, the suggestions that you&#39;ve given us into building the project, so thank you.

R, _T,_ d: &quot;Let me mute myself… if you raise your blue hand, I&#39;ll try to make sure I bring you into the conversation.&quot;

R, _T,_ d: &#39;…the reason we&#39;re mixing this group up is that we&#39;d really like all of you to talk with each other, so each room should have at least one parent in it, you&#39;ll have autistic adults in it, and we&#39;ll really dig in hear into where there might be tensions&quot;

**A,** R, _A_, d: &quot;First to apologise, there might be some background barking, I will try to stop it as soon as possible after it starts&quot;

**A,** R, _A_, d: &quot;I&#39;m not so used to this, I&#39;m working from home&quot;

R, _T,_ d: &#39;…so for previous discussions and what I&#39;ll do for this session as well is put direct and indirect next to every quote to say; if you&#39;re taking about, &#39;this is my experience&#39;, or &#39;my point of view&#39;, or &#39;my preference&#39;, then that would go under &#39;direct&#39;, but if it was something like, &#39;this is what my son would want&#39;, or, &#39;this is what autistic people like&#39;, or something like that, then it would be indirect – so it just carries a different weight.&quot;

###

## Feedback

R, _T_, d: &quot;…I had to certainly cut our discussion [autistic group] short&quot;

**A** , d: &quot;...I don&#39;t have a lot to say, to be honest, about what the takeaway is, I think most of the points have definitely been summed up&quot;

R, _T_, d: &quot;That&#39;s great, so you feel that you&#39;ve had your views reflected and you&#39;ve had a chance to say what you wanted to say?&quot;

**A** , d: &quot;Yes, I do&quot;

**P,** d: &quot;…I actually thought it was really useful to hear everyone&#39;s opinion, and how differently everybody is coming at it&quot;

**P,** d: &quot;I think it will be difficult to try and get everyone&#39;s input, try and make sure that everyone&#39;s voices are heard&quot;

**P,** d: &quot;I&#39;ve found it really useful today. I&#39;ve really enjoyed listening to people&#39;s different stories and seeing where it&#39;s gonna go&quot;

R, _T_, d: &quot;I am feeling like this has been such an amazing discussion&quot;

R, _T_, d: I&#39;ve learnt so much, and I think that the way of approaching the solutions to this really complex problem - to be honest I&#39;d got into a bit of a tangle thinking, &#39;wow, how do I balance all these things.&#39;

R, _T_, d: &quot;…just hearing people empathise with each other and coming up with solutions, I now see actually quite a lot of routes forwards based on people&#39;s ideas.&quot;

R, _T_, d: &quot;…just having this conversation available for research, I think just that in itself is wonderful because there&#39;s so much here. So thank you very much for sharing things, it&#39;s been really, really brilliant.&quot;

R, _T_, d: &quot;I think it&#39;s the coolest part of the whole project has been being able to have these conversations. I&#39;m very, very grateful for the advocacy that you&#39;re doing in your communities and the people you&#39;re supporting every day, and I&#39;m really grateful for your time…thank you so much to RA&quot;

**A** , R, _A_, d: &quot;I had a really great time talking to you all&quot;

R, _T_, d: &quot;The project is a huge project, it&#39;s a massive piece of work, but it&#39;s nothing without these conversations and your very candid, kind thoughtful and empathetic input, so thank you everyone&quot;

## Participatory science and impact

**A, P** , d: &quot;…this helps me to cross-fertilise into what I&#39;m already doing as a disabled co-producer with my council. We have a new civil campus, which was made by a disabled design team, and I represent neurodiversity on it.

**A, P** , d: &quot;I don&#39;t have necessarily mention autism all the time, but people have learned how I interact, and sometimes I come off camera, and I learned how to interrupt a presentation to say, &#39;why have you put that in red?&#39;, &#39;why is that there?&#39;, &#39;why is this not there?&#39;&quot;

**A, P** , d: &quot;We&#39;ve been put forwards for awards…because we were there right from the beginning, stage one, through to the build: so I interviewed contractors, inclusive architects, and I helped to find products, and all sorts of different things that I never thought I would do this time last year.&quot;

**A, P** , d: &quot;…one of the [people] I&#39;m working with this year is doing a presentation to a European group of architects who want to know more about how disabled people have advised on disabled inclusion for building design.&quot;

**A, P** , d: &quot;I&#39;ve even managed to get basins with no mirror behind it in all of bathrooms in all of the new town halls to cover people who are OCD, body dysmorphic, so they don&#39;t have to see themselves washing their hands umpteen times, or leaning across to put on makeup using my mirror. And I didn&#39;t have to do too much explanation of why there shouldn&#39;t be huge mirrors everywhere.&quot;

**A, P** , d: &quot;I think it&#39;s because I&#39;ve been doing this with Alan Turing and Autistica, that I&#39;ve actually felt empowered to say the reasons why I&#39;ve given that advice, and listening to other people&#39;s stories. So, the story telling&#39;s really important.&quot;

R, _T,_ d: &quot;I&#39;m so glad to hear that A, and it&#39;s exactly that, being able to say directly to people &quot;this is what will help the situation&quot;, and I&#39;m so glad they were listening to you, and you were able to have that impact, that&#39;s really, really great&quot;

**A,** d: &quot;I was supposed to be part of a similar group at university, and they didn&#39;t listen to a single word we said!&quot;

**R,** d: &quot;That sounds wholly unideal, hopefully we can do a lot better.&quot;

00-project-documentation/community/moderation-workshop/creation-of-report.md METASEP
# Creation of Moderation Report

## Contents

* [What is the Moderation Report?](#what-is-the-moderation-report)
* [How was the Moderation Report Created?](#how-was-the-moderation-report-created)
* [How will the Moderation Report be used?](#how-will-the-moderation-report-be-used)

## What are the summary documents?

This folder contains summaries and quotations from a moderation co-creation workshop held with autistic people, the relatives and carers of autistic people, and researchers from the Alan Turing Institute about the Autistica/Turing citizen science project (AutSPACEs).

We want to share the insights from our conversations to help others understand how they can best support autistic people by creating welcoming and inclusive spaces online. 

The summary document is a collection of anonymised quotes from session participants.

Quotations have been shortened or summarised, labelled according to the speaker (see the [key](./README.md#key) in the README file), and all information has been depersonalised.

These summaries have been circulated to all participants to offer them the opportunity to remove or modify their comments if they wish.
Based on the feedback receieved, three quotations were changed or removed by participants so that they better reflected their views. 

In total, the session included 3 autistic people, 3 parents of autistic people, and 2 people who were both autistic themselves and the parents of autistic people.
They were also attended by researchers from The Alan Turing Institute and Autistica. 

## How was the report created?

### 1. Design moderation session agenda:

An agenda for each session was written to loosely guide the discussions. 
These were based on researcher knowledge of what was important to investigate and determine from a developer and researcher prespective, as well as from the input of autistic poeple, their relatives and carers, in earlier focus groups.
A presentation was created by a researcher which included comments from autistic participants about their priorities, in order to guide the discussions. 

### 2. Run moderation session <img src="../images/noun-project-icons/noun_Conversation_2041500.png" width="150" align="right"/>


Participants came to an online session run over Zoom to discuss how to moderate the AutSPACEs platform and to help co-create a code of conduct for the platform. 

All participants from Autistica's Insight Group were paid in line with Autistica's policy and involve guidelines.

The session was recorded.

### 2. Transcribe discussion <img src="../images/noun-project-icons/noun_transcript_532343.png" width="150" align="right"/>

All data from the focus groups were collected and processed in accordance with the project's data management protocols for in-person sessions.

The discussion was written down word-for-word, except that no personally identifying information was included in this document.

Personally identifying information includes:

* Names of individuals
* Precise ages
* Schools, workplaces, universities, and addresses

The recordings were then deleted.

### 3. Collect anonymised quotes <img src="../images/noun-project-icons/noun_Document_188540.png" width="150" align="right"/>

Quotations were taken from the document, shortened, and organised into groups based on common themes.

The quotations were labelled to show whether the speaker is autistic, or the parent or carer of someone autistic, if they are one of the project's researchers, and which organisation they come from.
The quotes are also labelled to show whether the speaker is talking directly about their own experience, indirectly about someone else's experience, or generally about a group's experience.
This labelling system was co-designed by a researcher and an autistic collaborator.

The resulting, organised and labelled insights were sent to participants.

### 4. Review the summary document <img src="../images/noun-project-icons/noun_Eye_2040041.png" width="150" align="right"/>

All participants had a chance to review the summary document and make changes.
They were given 14 days to do this. All participants from Autistica's Insight group were paid £30 for this additional work.

We asked them to:

1. Understand the purpose of the document and what is going to happen with the insights.
2. Understand the information in the document.
3. Ensure the information is appropriately anonymised.
4. Send us any requested changes.

The document was then changed on the basis of this feeback. Additionally, some quotations were removed in line with a commitment to be autistic-voice first. Participants were shown which quotations were removed and all were content. 

## How will the Moderation Report be used?

### Publish insights online <img src="../images/noun-project-icons/noun_online_1632606.png" width="150" align="right"/>

The moderation report is published online at: https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/community-recommendations/moderation-co-creation/moderation-report.md.

The quotes can be used by anyone and for any purpose.
Anyone using the information must credit the Autistica/Citizen Science community.

Potential users include:

* Future contributors to this project who want to add to or use the insights from the moderation session. 
* Autism researchers and advocates who want to make sure they are serving the needs of autistic people.
* Parents, friends and colleagues who want to better understand how to support an autistic person they know.

### Write down platform requirements <img src="../images/noun-project-icons/noun_todolist_1128326.png" width="150" align="right"/>

The suggestions from the moderation session are being used to create a moderation proceess, code of conduct, and guidelines for reporting on behalf of others. This process is being led by two participatory researchers.
Work relating to moderation can be found under the "Moderation" Milestone in this repository. 

We can't do everything, but we will try our best to follow the suggestions included in the summaries.

Please email [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) with any feedback or requests for changes, or add them to our "always open" Google Form at [https://bit.ly/AutisticaTuringCitSciForm](https://bit.ly/AutisticaTuringCitSciForm).

00-project-documentation/community/moderation-workshop/README.md METASEP
# Moderation Workshop

This folder contains a [report](moderation-report) consisting of comments and recommendations from the AutSPACEs community concerning how we should moderate the AutSPACEs platform.
The dataset was created by organising the comments made during an online co-creation workshop to understand better the relevant issues around moderating an online citizen science platform (AutSPACEs) for research into sensory processing differences experienced by Autistic people and the effect this has on their daily lives as they navigate different environments.

## Contents of this document

* [Key](#key)
* [Moderation decisions regarding the data](#moderation-decisions-regarding-the-data)
* [Using the data](#using-the-data)

## Key

The key below shows how the comments in the summaries have been labelled.
They were co-designed with an autistic collaborator and are based on earlier informal scoping work with Autistica's Insight Group.
More detail can be found in the [creation-summary-documents.md](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/community-recommendations/moderation-co-creation/creation-summary.md) file which describes in detail how the report was developed in collaboration with focus group participants and autistic collaborators.

#### Where From

* *A* = Autistica
* *T* = Turing
* *F* = Fujitsu

#### Specialist Role on Project

* R = Researcher

#### Connection to Autism

* **A** = Autistic person
* **P** = Parent of someone autistic

#### Connection to Experience

* d = direct: experience, suggestion, or opinion of speaker
* i = indirect: witnessed or reported on behalf of someone else by speaker
* g = general comment

## Moderation decisions regarding the data

A full, verbatim transcript of the co-creation session is held by the core research team.
This public dataset has been organised into themes and moderated so that it is aligned with the values of our community, and reflects the wishes of the individuals who are represented. 

All speakers were given the opportunity to read through the dataset and request changes before it was made public. A few minor edits have been made following discussions and 2 comments were removed which the speakers did not feel accurately reflected their views. 
Personal names have been removed and replaced with a label to identify the speaker's connection to autism (as shown in the key). 
We have also taken out references to specific locations, institutions, and organisations which might identify an individual. 
For the purposes of creating a public dataset which is autism-voice first, we have edited out comments which contain negative emotional responses, struggles, or judgements that non-autistic people have about autistic people, where the emphasis is on non-autistic people’s experiences (e.g. personal reactions to autistic people’s behaviours). 
We have kept comments about non-autistic people’s responses to autistic people, when the emphasis is on autistic people’s experiences (e.g. comments about dealing with neurotypical prejudice). 

Feedback from the AutSPACEs community, including from autistic people, autistic parents of autistic people, and parents of autistic people, has been predominantly that there should be an emphasis on autistic people’s experiences first and foremost, and that having too much focus on non-autistic views of autistic people can be damaging to autistic people, and work against creating a safe space for autistic voices to be heard.

**No edits have been made to how autistic people refer to and describe themselves, unless they have requested it.**

## Using the data

This data is openly licensed with a CC-BY 4.0 (Creative Commons Attribution 4.0 International) license, which means you're free to use the materials and remix them so long as you credit the source.
This data has been released publicly under an open license in the interests of open, reproducible and inclusive science. 
Care has been taken to balance this with the importance of privacy for our contributors.
We have chosen to release it because we believe that it has the potential to increase positive impact for autistic people and others, by allowing the direct voices and views of diverse autistic people to be more widely heard and represented in research. 
Please respect our values and the contributions of our commmunity by being purposeful and careful in how you use this data.

**We request that the data is used in ways which conform to our values of neurodiversity, and respect for autistic people, and not for purposes likely to be detrimental to autistic people. Please do not use these comments in any way which attacks, undermines, or demeans autistic people, either explicity or implicitly.**

If you are unsure whether your use of this data upholds these values, please get in touch with a member of the core research team and we will assist you. 
You can do this publically by creating an issue in this repository, or privately by sending a direct message to Georgia in our [slack](https://slackin.openhumans.org/) channel.

00-project-documentation/community/meet-ups/README.md METASEP
# Community meet-up sessions

This folder contains information and resources relating to AutSPACEs commmunity meet-up sessions, as well as previous notes.
AutSPACEs meet-up sessions are open to everyone, and are a place to discuss anything relating to AutSPACEs and to work together on the project. 
They take place online via. Zoom and are hosted by AutSPACEs researchers. 

## Meet-up Checklist

* [ ] Inform community members via. newsletter
* [ ] Create a Google Doc and agenda using the Google Doc Template(#google-doc-template)
* [ ] Send out a calendar invite
* [ ] Link to the Google Doc under [Notes from Previous Sessions](#notes-from-previous-sessions)

## Google Doc Template

Please copy this [template Google Doc](https://docs.google.com/document/d/1utjgMS1HwADMtK5gz5EYOKdPW6vdeshxt9-XaZ4DONY/edit?usp=sharing) and use it to make a Google Doc for each meet-up session. 

## Notes from Previous Sessions

### 2023

* [12-01-2023](https://docs.google.com/document/d/1wu0LULOY6k-jbbYwZwuZmwDyI7cBa0zPc2shramRWkM/edit?usp=sharing)

### 2022

* [24-03-2022](https://docs.google.com/document/d/1zlznkUp273-j3hot2YDvQVHj9h-fY-gMKyggNYSbdMY/edit?usp=sharing)
* [10-03-2022](https://docs.google.com/document/d/1ohi4gwmj8BmxlHstahkX20WDCsxB-wJP60HRGSN4TJ8/edit?usp=sharing)
* [24-02-2022](https://docs.google.com/document/d/1q0KBqx_X9Eh6i3x9kSzVVS8bIbBg6ucVkFLnkxLkDEQ/edit?usp=sharing)

### 2021

* [25-11-2021](https://docs.google.com/document/d/1V8jYBZGhSLEcfTXfYGb-L-TtnXL7TqTa0KCK8eLMwSA/edit?usp=sharing)
* [28-10-2021](https://docs.google.com/document/d/19gUHi1yKhVpcpDZwoS9AgWwGhbbM0vc-aemUzbSYhEs/edit?usp=sharing)
* [08-07-2021](https://docs.google.com/document/d/13FaiZLn8bqsFhTeEAPooFGFxwndpSeuw2zQhsCLjS2E/edit?usp=sharing)
* [27-05-2021](https://docs.google.com/document/d/18j6HjxW12UrIXlmmQJZGTPRvaDfpjBsdtvZFlLp6br0/edit?usp=sharing)
* [13-05-2021](https://docs.google.com/document/d/1e6MablDYduDTTfY5E4C13XNWDPeUxrurV3U8sFivlIU/edit?usp=sharing)
* [25-03-2021](https://docs.google.com/document/d/18dJqTmeENZNknrCYnydcNwc77hTeCfKlr1GH1lJWP7Q/edit?usp=sharing)
* [22-02-2021](https://docs.google.com/document/d/1sI9S12DWwphEakTeYymrv6C868mYP12-LaOurRPOzZI/edit?usp=sharing)

00-project-documentation/community/focus-groups/creation-of-summaries.md METASEP
# Creation of focus group summary documents

## Contents

* [What are the summary documents?](#what-are-the-summary-documents)
* [How were the summary documents created?](#how-were-the-summary-documents-created)
* [How will the summary documents be used?](#how-will-the-summary-documents-be-used)

## What are the summary documents?

This folder contains summaries and quotations from three focus group sessions held with autistic people, the relatives and carers of autistic people, researchers and developers, about the Autistica/Turing citizen science project.

The sessions were held with members of Autistica's Insight group, Fujitsu, The Turing, and Autistica on 18 and 24 September 2019, and 4 October 2019.
You can read the detailed summaries by following these links:

* [18 September 2019](20190918_summary-18-September-2019.md)
* [24 September 2019](20190924_summary-24-September-2019.md)
* [4 October 2019](20191004_summary-4-October-2019.md)

We want to share the insights from our conversations to help others understand how they can best support the needs of autistic people with sensory processing differences.

The summary document is a collection of anonymised quotes from focus group participants.

Quotations have been shortened or summarised, labelled according to the speaker (see the [key](README.md#key) in the README file), and all information has been depersonalised.

These summaries have been circulated to all participants to offer them the opportunity to remove or modify their comments if they wish.
Based on the feedback receieved, none of the content was requested to be changed, but the format was modified.

In total, the focus groups included 9 autistic people, 5 parents of autistic people, and 4 people who were both autistic themselves and the parents of autistic people.
They were also attended by researchers from The Alan Turing Institute, and members of Fujitsu and Autistica - some of whom were themselves autistic, the parents of autistic people, or both.

## How were the summary documents created?

### 1. Design focus group agenda:

An agenda for each session was written to loosely guide the focus group discussions.
These were based on researcher knowledge of what was important to investigate and determine from a developer and researcher prespective, as well as from the input of autistic poeple, their relatives and carers, in earlier, informal scoping sessions.
The request for potential questions was also sent out to subscribers of the project's mailing list, and autistic collaborators input suggestions.

### 2. Run focus group <img src="../images/noun-project-icons/noun_Conversation_2041500.png" width="150" align="right"/>



Participants came to a focus group at Fujitsu to talk about a project to design a platform to use for autism research.

These sessions were run according to the project's study protocol for in-person sessions, detailed in the study protocol, which can be found in our [archived repository](https://github.com/alan-turing-institute/AutisticaCitizenScience).
In line with Autistica's policy, all sessions were held outside of rush hour.
The sessions were held in Fujitsu's offices in Baker Street, London. Refreshments including vegan and gluten free options were provided after the request of some participants, and a quiet room was available.
There were always multiple facilitators present.
All participants were talked through a schedule agenda and a consent form, as well as a participant information sheet. These can be found in our [archived repository](https://github.com/alan-turing-institute/AutisticaCitizenScience).

All participants from Autistica's Insight Group were paid in line with Autistica's policy and involve guidelines.

The focus group was recorded.

### 2. Transcribe discussion <img src="../images/noun-project-icons/noun_transcript_532343.png" width="150" align="right"/>

All data from the focus groups were collected and processed in accordance with the project's data management protocols for in-person sessions, which can be found in oour [archived repository](https://github.com/alan-turing-institute/AutisticaCitizenScience).
The focus group was written down word-for-word. No personally identifying information was included in this document.

Personally identifying information includes:

* Names of individuals
* Precise ages
* Schools, workplaces, universities, and addresses

The recordings were then deleted.

### 3. Collect anonymised quotes <img src="../images/noun-project-icons/noun_Document_188540.png" width="150" align="right"/>

Quotations were taken from the document, shortened, and organised into groups based on common themes.

The quotations were labelled to show whether the speaker is autistic, or the parent or carer of someone autistic, if they are one of the project's researchers, and which organisation they come from.
The quotes are also labelled to show whether the speaker is talking directly about their own experience, indirectly about someone else's experience, or generally about a group's experience.
This labelling system was co-designed by a researcher and an autistic collaborator.

The resulting, organised and labelled insights were sent to participants.

### 4. Review the summary document <img src="../images/noun-project-icons/noun_Eye_2040041.png" width="150" align="right"/>

All participants had a chance to review the summary document and make changes.
They were given 14 days to do this. All participants from Autistica's Insight group were paid £30 for this additional work.

We asked them to:

1. Understand the purpose of the document and what is going to happen with the insights.
2. Understand the information in the document.
3. Ensure the information is appropriately anonymised.
4. Send us any requested changes.

All participants were emailed review guidelines. See our [archived repository](https://github.com/alan-turing-institute/AutisticaCitizenScience).

There were no requested changes to the content of the documents, however there were some suggested improvements to the layout, formatting, and labelling of the documents.
The document was then changed on the basis of this feeback.

## How will the summary documents be used?

### Publish insights online <img src="../images/noun-project-icons/noun_online_1632606.png" width="150" align="right"/>

The summary documents are published online at: [https://github.com/alan-turing-institute/AutSPACEs](https://github.com/alan-turing-institute/AutSPACEs). 

The quotes from the focus groups can be used by anyone and for any purpose.
Anyone using the information must credit the Autistica/Citizen Science community.

Potential users include:

* Future contributors to this project who want to add to the insights from the focus groups.
* Autism researchers and advocates who want to make sure they are serving the needs of autistic people.
* Parents, friends and colleagues who want to better understand how to support an autistic person they know.

### Write down platform requirements <img src="../images/noun-project-icons/noun_todolist_1128326.png" width="150" align="right"/>

The suggestions from the focus group will be turned into a to-do list for the project team of researchers, developers, and designers, and for the wider community.

These will be visible as issues in GitHub, and will be linked to the source in the summary.

The issues will be used to help build the citizen science platform.

We can't do everything, but we will try our best to follow the suggestions included in the summaries.


Please email [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) with any feedback or requests for changes.

00-project-documentation/community/focus-groups/README.md METASEP
# Focus groups

This folder contains summaries and quotations from three focus group sessions held with autistic people, the relatives and carers of autistic people, researchers and developers, about the Autistica/Turing citizen science project in Autumn 2019.

## Contents of focus-groups folder

* [Creation of focus group summary documents](creation-of-summaries.md)
* Focus Group Summaries:
  * [18 September 2019](18-september-2019.md)
  * [24 September 2019](24-september-2019.md)
  * [4 October 2019](04-october-2019.md)

## Key

The key below shows how the comments in the summaries have been labelled.
They were co-designed with an autistic collaborator and are based on earlier informal scoping work with Autistica's Insight Group.
More detail can be found in [creation-summary-documents.md](creation-summary-documents.md) file which describes in detail how the summary documents were developed in collaboration with focus group participants and autistic collaborators.

#### Where From

* *A* = Autistica
* *T* = Turing
* *F* = Fujitsu

#### Specialist Role on Project

* R = Researcher

#### Connection to Autism

* **A** = Autistic
* **P** = Parent of someone autistic

#### Connection to Experience

* d = direct: experience, suggestion, or opinion of speaker
* i = indirect: witnessed or reported on behalf of someone else by speaker
* g = general comment

00-project-documentation/community/focus-groups/24-september-2019.md METASEP
# Focus Group Data

## 24 September 2019

## Contents

1. [Value of project and motivations to take part](#1-value-of-project-and-motivations-to-take-part)
2. [Experiences of autistic people and their families in their daily lives](#2-experiences-of-autistic-people-and-their-families-in-their-daily-life)
3. [Platform design](#3-platform-design)
4. [Moderation](#4-moderation)
5. [Representing others](#5-representing-others)
6. [Data management](#6-data-management)
7. [Contribution channels](#7-contribution-channels)
8. [Ways of working](#8-ways-of-working)

## Key

#### Where From

* A = Autistica
* T = Turing
* F = Fujitsu

#### Specialist Role on Project

* R = Researcher

#### Connection to Autism

* *A* = Autistic
* *P* = Parent of someone autistic

#### Connection to Experience

* d = direct: experience, suggestion, or opinion of speaker
* i = indirect: witnessed or reported on behalf of someone else by speaker
* g = general comment

## 1. Value of project and motivations to take part

### a) Helping autistic people and their families

* (R, *T* d): “I think there’s a possibility that we can really make changes to environments in a way that will improve things for autistic people, so I’m very excited to be here.”
* (*F* d): “I would like to be able to gain a lot of information and at least help my sister and my other siblings and help the [autistic] children in my family.”
* (R *T* d): “guidance for public spaces…with actions that they could take to make their spaces more accessible”

### b) Helping people more generally

* (R *T* d): “giving people access and management over their own data and the purposes that it’s used for is one of the things that I’m very interested in”
* (*F* d): “I [have] a real passion for responsible business in general, and making a difference to the communities that we serve”
* (**P** g): “it’s empowering to people, to give them something that they do have to contribute”

### c) Research

* (R, *T* d): “To…survey as broad a swathe of the autistic community as possible, in order to pull out common themes of experiences”
* (**P** d): “because I’m a budding researcher, yes, of course, I’m highly motivated”
* (R, *T* d): “to break autism research out of just being in a lab”

### d) Allowing people to be heard

* (R, *T* d): “I’m really fascinated by this project because it’s participatory, the inclusion of people in the design”
* (**A** *A* d): [bringing] “autistic people and family members into research, and other things which gets their voices heard”

### e) Helping educate neurotypical people and remove stigma

* (**P** d): “I’ve always been interested in what makes [my son] understand the world, and how to make things easier for him
* (*F* d): “I’m really looking forward to listening to people”
* (*F* d): “It’s been fantastic for me…to get such a better understanding and an insight into [autism]”
* (*F* d): “I can then help to share those messages within Fujitsu to employees too and raise that awareness…to educate people within Fujitsu and help to support, which is great”
* (R, *T* g): “…if you already know autistic people you can learn quite a lot from having those conversations, but if you don’t, there are maybe a lot of stereotypes that…perpetuate a very narrow description of autism”
* (R, *T* d): “educating neurotypical people on individual actions that they could take”
* (**P** i): “for [autistic son] to make a unique contribution to help others not be misunderstood”
* (**P** i): It feels good to be the one educating others: “I think that also from the point of view of the person giving the information, how fab will he feel”
* (*F* d): “being in that situation [of experiencing something] and understanding exactly how it feels as opposed to what I think it feels are two very different things”

### f) Creating connections/community

*(R, *T* d): “I’m really excited about…people crossing over between the different groups that they may join the project in, as a member of the [developer] community and as an autistic person”
* (R, *T* d): “building community and support within the autistic community”
* (**P** g): “…sharing with the community…I think that would be particularly attractive”

### g) Sharing expertise and personal perspective

* (*F* d): “…being here is actually exceptionally useful, because I can have some first-hand experience in terms of understanding the requirements for the platform.”
* (**P** d): My other hat is that I’m also a researcher…and the last project…was on autism and anxiety and also sensory sensitivities…so that was why I was like, woo, like it”
* (**P** *F* d): “I too am a mother of a child with autism…I can perhaps just bring, again, some perspective”
* (**A** **P** d): “I’ve found a few things over the years, and then hopefully I contribute to this project a little bit my experiences”
* (*F* g): “it’s not just around volunteering and fundraising, it’s using our key skills and expertise to do a project like this”
* (**P** i): “the participants that I get coming in to do my research, who are nearly all autistic people…they want to actually share, but it would need to be clear”

## 2. Experiences of autistic people and their families in their daily life

### a) General

* (**P** i): autistic son “loves discovering new places…but sometimes it’s kind of hard, so it would be quite interesting to study that”
* (**P** i): autistic child finding the smell of deodorant strong/concerning
* (**P** i): autistic son is “minimally verbal” - can’t read and can’t write.
* (**P* d): interpersonal strain, finds daughter’s behaviour unpredictable: “it goes up and it goes down”
* (**P** i): may have to wait for another bus if the bus is too busy because wants a specific seat
* (**A** **P** d): as a parent and autistic person, “I’ve found a few things over the years” which have made life easier
* (**A** **P** d): “I know my way underground, don’t put me above ground, I think I’m a mole”
* (**P** i): “he [autistic son] is very empathic with people he feels are either misunderstood or coerced into doing stuff that they don’t want to do”
* (**P** g): “it feels awful not to be understood and not to be, you know, to be coerced into doing stuff because people don’t get that it’s actually a really big deal, so that is a real inspiration.”
* (**P** i): “my son was absolutely losing it, completely losing it, he was just literally shaking head to toe on the train, and I was thinking – can we make it to the next stop? And this bloke came on and he had this full on three piece suit, and he was very chic, [my son] completely knew, he just chose to be very relaxed about the whole thing, he sat down, and that was completely fine”

### b) Positive experiences and suggestions for improvements

* (**A** d): Colour-coding on the floor of stations

## 3. Platform Design

### a) General

* (**A** **P** g): have a popular website with lots of information
* (**A** **P** g): “people would go and read lots of exciting information, then from there we can log in and add our own experience.”
* (**A** **P** d): something like mumsnet: “there’s loads of people talking on forums…the prompt is you go on there to find out about motherhood, start dealing with all sorts of issues, and then you think, okay then I’ll ask this question”
(*F* g): Critical to have a website people want to use, that, “we get this absolutely spot on for people to…want to use it and…come back time and time again.”
* (**P** d): “I’m not looking to go somewhere because I want to contribute…because I haven’t got much time…then eventually when I get some tips, I go, ‘actually I could contribute to that one.’”
* (R *T*  d) “we want to make sure that it’s a safe space and it’s…[an] autistic voice first space”
* (**P** d): “Could it be divided into different sections? Because so far we’ve got tubes, we’ve got noise, will people come up with categories or something, or just an open free for all?

### b) Demographic information

* (R *T  d) some demographic information will have to be collected: “there’ll be some bare minimum information that you have to complete, which I think is just going to be, are you autistic or not”
* (R *T* d) a lot of analyses difficult if you don’t record who is autistic and who isn’t
* (R *T* d) (Probable) demographic information to record and request:
* (R *T* d) connection to autism: whether the person entering the experience is autistic or is a friend, relative, carer, co-worker, of somebody who is autistic
		* (R *T* d) “extremely important”
* (R *T* d) age bands:
* (R *T*d) maybe in decades, not necessarily precise age
* (R *T* d) gender
* (R *T d) “we’ll have some conversations with…more traditional autism researchers”
* (R *T d) a certain amount of information will have to go in your account
* (R *T* d) you should be able to go back and edit your account
* (**A** d): segmentation according to demographics
* (**A** g): “when people are looking at experiences they obviously want it to be relevant to their circumstances, so to some extent it might be a good idea if there was some segmentation in terms of demographics”
* (R *T*  d) “I like your idea…so you’re more likely to see more relevant examples, but we also need it to actually be able to do the research on the other side, because you can quite a lot of…learning from the data by reading experiences and clustering them together”
* (R *T* d) could allow the machine learning of similar/relevant experiences to be much faster than waiting for data to amass would permit

### c) Motivation

* (R *T* d) “one take home for us is we need to be really clear about where you go, why you’re doing it…simple is key, but also making it quite motivating…explaining why it’s important”
(R *T* d) videos, for example, from someone at Transport for London, someone at the Barbican Theatre, someone we’ve already collaborated with, saying, we’re interested, like, thank you for taking part in this project, we are so excited to learn from your experiences…”
* (**P** g): “showing…the end result, not just, yeah, yeah, we’re listening, but we listened and look what we did”
* (R *T* d) need to gather data to make changes first
* (R *T* d) Autistica have shared tips of sort of ways to make an environment more accessible, which could help demonstrate value of research
* (R *T* d) Need to balance making motivations explicit with desire for simplicity many people had also expressed
* (R *T* g) Motivating information could be upfront or on a separate page
* (*F* g): a pop-up saying when someone lands on the page with a thank you for coming onto the website, and saying there how beneficial it will be

### d) Personal Choice

* (*T* R, g): “…there’s also something really kind of fun and exciting about people being able to upload lots of experiences…whenever they want to, in whatever way they want to”
* (**A** d): “accommodate as many different preferences and styles for providing input within the realms of what’s actually achievable”
* (*F* d): settings page to tailor the visual aspects of the interface
	* (*F* d): use to modify background or colour themes
	* (*F* d): texture options, such as a wooden background, or metal
* (**A** i): I do appreciate that other people like to customise things
* (**A** d): “I know I’m different from a lot of people so I wouldn’t want my experience to…hold too much sway.”

### e) Clear communication

* (**P** d): Have a tagline: “this is what we’re looking for, this is what we want from you, and this is what we’re going to do, and don’t be afraid to repeat yourself just literally on every page like, this is what we want, this is what we need from you, this is what we expect from you”
* (*F* d): an “about” section to clearly explain project and its purpose
* (*F* d): a dictionary (within the “about” page) to explain terminology
* (R *T* d) show videos of people contributing in different ways and maybe for different reasons on the about page – “I’m imagining a vignette…of three different people…who take part for different reasons, with the idea that you should totally see some aspect of yourself across those three”
* (**P** d): “…change your language because already I’ve understood about a tenth of what you were saying - I just go – …interface – I’m lost”

### f) Simplicity

* (**A** d): “I’m very prone to information overload, so I would want from my point of view this default interface to be as plain and un-distracting as possible…I wouldn’t want something that was busy and distracting, it just needs to be focussed on the content.
* (*F* g): [based on feedback from last session] limit quantity of items shown to user on page to 5 at once.
* (R *T* g) need to balance features with simplicity: “it’s interesting how much information needs to go on this about page”

### g) Navigation

First step (currently) is creating an Open Humans account:
* (*F* g): “I’m just trying to walk through the process of how you would get to the initial page, you know, would we just type into Google and then you click on the [url]?”
* (*F* d): “I was thinking originally I would add it to the experiences tab page, to say, in order to submit or view experiences, please log on to Open Humans”
* (*F* d): “you could probably think of some example applications where…it says, ‘please log in’, and you’d have to log in to Facebook or Twitter the first time.
* (*F* g): Possible to log in via Facebook or Google as well as Open Humans?
* (R *T* d): “you do need to consent to Open Humans holding your data, but you can use your Facebook or Google accounts to connect to Open Humans
* (**A** d): “This might be unique to me…I almost never take up the offer to connect users on Facebook, because I’m slightly concerned about big data, and linkages between different repositories”
* (R *T* d): “I also don’t do that, and actually one of my goals of this project is to show that big tech organisations don’t need to have all of your data for all of these purposes.”
* (*F* d): Use an API call to integrate
* (R *T* d): “I think probably what we would need is to have maybe another little video that people can watch about Open Humans if they want to”
		* (**P** d): “I think that’s too much though”
* (R *T* d):Optional button people could click on if they were interested to find out more about Open Humans
* (*F* d): There would only be one login for the citizen science, because we’re using the login for Open Humans as part of the login for this application
* (*F* g): distracting to be navigated onto a different place, once you’ve gone onto a website
* (**A** **P** d): “I go on this interesting website, I can read about autism, and then have a button in the corner – add your experience - and once I go in login from there…I would like to go for something that is useful for me.”
* (*F* d): Instead of having the navigation across the top, have it down the side in a navigation bar
* (*F* d): when you hover over items they indicate which area of the application they link to
* (*F* d): should recognise new users and by default send them to the about page, which then details how to use the application and what it’s there for
* (*F* d): Pop-up which could give tour of site, and would be easy to click off, on first arriving
	* (*F* d): “when…a video pops up…I’ll just close it down”
* (**P** d): “possibly what would get me there…and maybe would make me want to come back…would be rather than starting on the ‘about’ page, rather than starting on the ‘experiences’…starting on the “tips” page”
	* (*F* d): “seeing advice from other people coming in”
* (*F* d): button at top of ‘tips’ page saying, ‘contribute a tip’, or, ‘provide a tip’
	* (**P** d): “then that’s where I would put my experiences, I’d put them in there”

### h) Accessibility

* (**A** d): Have a non-verbal means of inputting information
* (*F* d): visual symbol on tips cards showing what it’s related to
(* *F* d): we would need to be able to support screen readers with the application

### i) Filtering Experiences

* (*F* d): filter based on categories of experience that people could select via. ‘tips’
* (**A** g): segmentation in terms of demographics: “what’s relevant to young people, or adults, is going to be quite different”

### j) Toggling Consent

* (R *T* d): “I hope that it’ll look like a list of the things that you’ve put in with little switches for example where you can change your mind about who has access to what and for what purpose.”

### k) How should we ask the research question?

* (**A** g): “At the moment it’s too general”
* (**A** **P** d): “If I just see a page which says tell me about your experiences, I would just blank”
* (**A** **P** d): “…it’s too vague”
* (R *T* d): “the difficulty is…it’s sort of super vague on purpose, because we don’t want to constrain anyone, and only say things about public transport, or only say things related to work.”
* (**P** d): It’s confusing: “What am I supposed to, what am I meant to do for this, what is the idea behind your project?...as the parent I’d be like, okay, what do you want, what do you want from me, and what kind of experiences”
	* (**P** d): It’s what is expected of us, what do you want me to do?
* (**P** i): [speaking of an autistic person for whom they are a befriender] “…he wouldn’t understand that form, because, he’d be like, um, what do you want me to say?”
  “maybe it’s not something about the wording itself, it’s the user journey of how you actually come to the question”
* (**P** g): “in order to get people to join up or to contribute in the first place, hopefully you would explain there what kind of thing you would like, so by the time we get here we get some idea of what you mean by ‘experience’”
* (**P** d): have a tagline, that this is what we want you to do
* (**P** d): tagline shouldn’t be in the action box, as too restrictive
* (R *T* d): instead of having just two boxes, have quite a few smaller boxes that appear one by one with much more structured prompts
* (*F* d): a question mark pop-up which explains what is meant at the end of the question
* (*F* d): templates that you could submit quite quickly, but also adjust if needed
* (P** d): divide into different sections
* (**P** d): divide sections up by senses, e.g. visuals, auditory
* (**A** **P** d): divide into environmental issues, school issues, and so on
* (**A** **P** g): should have some sort of category, but then “the form itself is good, once you’ve gone into your right category, then this is nice and simple, it would be easy to fill out”
* (**P** g): “make clear to anybody that submitted that this would be useful for other people as well, because that would tailor the way they say things”
* (*F* d): “potentially not necessarily sharing the actual experience itself because that could be in a negative wording, but actually just sharing the what would you wish to be…different”
* (**A** g): “…accommodate as many different preferences and styles for providing input within the realms of what’s actually achievable…some people would prefer the free text option…but others would like to be guided down a more structured process”
* (**P** d): “So what information would you like us to know about what you need from the platform, what is most important for you to get out of the platform, what you would like to see from the platform, and what concerns you about the medium?”
* (*F* d): Base feedback input on “user stories” template to guide through process- start by directly asking what sort of feature you want to have in the platform, then ask why you have suggested this feature, give reasons and move onto success criteria
* (*F* d): “alongside this you’d also have your approval to say, ‘I’m happy for this feature to be shared publicly’, and you can just submit and then it gives you your thank you for submitting the feature”
	* (**A** **P** d): “I would find it much easier to fill it out.”
* (**P** d): “I understand you don’t want to lead people on what type of…answer [you want people to give]”
	* (**P** g): Makes it easier to understand the type of thing you’re looking for
* (T *R* d): “That’s only one small slice of what we’re looking for, so that does lead into an extremely narrow set of questions, but it was clearer, but it was only because it was too narrow”
* (**P** d): “It was narrow, but that kind of thing can be quite useful I think”
* (**A** g): “Question 1 could be: ‘please look at this prototype platform’, and then obviously that would be self-contained in terms of what the platform’s about, and then you could give people an opportunity to say whether this was along the right lines, whether it needed tweaking, and then you would know that you were getting what you were asking for”

### l) Presenting Experiences

* (R *T* g) “there’s two different points here, one is being able to browse other people’s experiences, and be able to learn from them and see them, and find ones that are similar”
* (**A** d): Search box for experiences
	* (R *T* d) “I think definitely a search box seems like a really good idea”
	* (**A** d): otherwise it would be quite overwhelming, you wouldn’t know where to look
	* (*F* d): show tags instead of a full entry text box when you search
* (R *T* d) “…there’s a chicken and an egg problem…in order to build links between different experiences, you have to already have quite a lot of experiences, so you have to already [have] a decent amount of data” – probably something to include towards the end of the 2-year funded window

## 4. Moderation

### a) General

* (**A** g): “…we have got a duty of care”

### b) Who should moderate?

* (**A** i): Automatic moderation: “in terms of the volume of postings…you can’t manually moderate all that can you? Doesn’t there need to be some kind of automatic moderation?
* (**P** d): “I know [moderation] is a lot of manpower…person power”
* (R *T* d) the automatic filtering that you see on social media is extremely biased…so I think it would be really important to do it laboriously, manually, to start off with”
* (R *T* d): Potentially use automation to scale if platform is more popular than anticipated with customised learning and automated recognition
* (**P** d): “I don’t think you can get away from it being an individual person, especially when you’re starting off”
* (R *T* d) distributed team of people who were helping to moderate
	* (R *T* d) I think you would want to have a sort of a central oversight
* (R *T* d) members of Autistica’s Insight Group or frequent contributors could be shown 5 random comments with option to accept or reject
* (**A** d): allow people to flag/report post-moderated comments if they have concerns
* (R *T* g) “there’s a risk…that people who are not autistic may have their own personal opinions about what is right and what is acceptable, and those opinions I think while they might be interesting to observe, are not actually the most important opinions, and shouldn’t be the main thing in the decision-making process”
* (R *T* d) self-moderation: “you could decide to only see comments by only autistic people, or only parents, or a combination of both”
	* (**P** d): Have a check-list to help people self-moderate: “so before you click ‘public’, you can…check is this likely to cause offense? Is it likely to do this? Is it likely to do that?”
* (R *T* d) “it should be a representative group of the people who are going to be writing…experiences”
( (R *T* d) a committee: “I suspect we’ll get to the point where there is a committee where people review applications to get hold of the data”

### c) Communication

* (**P** i): for some autistic people the notions of private spaces are maybe not so well understood, even if they might not have learning difficulties

### d) Community Response

* (**P** d): debates about autistic identity: “you can easily cause offense. very, very quickly, so there’s a danger that you could just get into whirlpools of this kind of stuff”
* (**P** d): “should anybody go off and start going down the ABA route, oh my gosh, oh my gosh, you know you would get a torrent of stuff”
	* (R *T* i) Some will find it positive, some negative, and both responses are valid
* (**P** i): some will credit child’s success to ABA, others will say they are suffering from PTSD because of ABA
* (**P** i): “[a friend] spent about half an hour getting that young [autistic] man down the escalator - he was absolutely beside himself – why? Because it was part of his programme, one step in, one step out, and that’s not necessarily ABA, but then other people would say, ‘oh yes in small, incremental steps you will get your child to do and to be part of the ‘normal’ world’”

### e) Concerns About Sharing Information

* (**A** g): Concerns about commercial use: “[put] a ringfence around potential commercial uses, because this is intelligence which commercial interests might want to get their hands on”
* (**A** i): “people might be wary of contributing, because they might think people just want to make money out of my vulnerabilities”

### f) What should we moderate for?

* (R *T* d): moderate all comments before they go live, but not moderate for research
* (R *T* d): personal data or things that would compromise someone’s anonymity
* (**P** d): email addresses
* (**P** d): home addresses
* (T, R, d): another risk to anonymity is data triangulation, “where if you have lots of different pieces of information about someone it’s potentially possible to work out who they are, even if there’s no one piece of absolutely identifying information.”
* (R *T* d) things like personal data shouldn’t go on there
* (**P** d): swearwords?
	* (**A** **P** d): “It’s a tough one”
	* (**A** **P** d): “I’m personally okay with it”
* (**P** *F* i): depends on the age range of people logging on: “my 8 year-old nephew who’s autistic, he’s quite tech savvy so he’d be able to come on here and probably go onto the website, share his experiences, but I don’t think you really want an 8 year old reading swear words”
* (**A** i): “…if you don’t include swear words, we end up quite restricting some people because that’s how they communicate”
* (**A** d): have a setting to filter out swear words as a child-friendly option
* (**A** **P** d): “f-ing and blind-ing all over the place… that’s completely by the by, I really couldn’t possibly care less”
* (**P** d): discrimination and prejudice:  sexist, racist, and homophobic and other comments”
* (**P** d): “I think bad language is a very different thing from the homophobia”
* (*F* d): important that the content is real, if you’re “moderating it down, you aren’t getting the actual experience itself.”
	* (**P** d): “You don’t want to make it sort of fluffy clouds, when it’s not”
* (*F* i): “if that experience is so overwhelming to somebody, you have to express that”

### g) Redaction

* (R *T* d): Option of removing pieces of compromising information, while leaving the rest of the experience intact
* (**A** **P** i): “Very complicated, that might be very, very hard”
* (R *T* d): “it’s very hard to do anything that is not all or nothing”

### h) What would help?

* (**P** d): Guidelines
	* (**A** **P** d): “you’ve got to have a clear set of rules, from the start”
	* (**P** d): a general rule to make clear what is and is not allowed (like Facebook has)
* (**P** i): “even if they might not have learning difficulties, it’s still not 100% clear about what’s okay sometimes, [autistic people] may not get the level of intimacy that it’s okay to share, and what may not be appropriate”
* (**A** g): Don’t start from scratch, look at existing models and how they might be tailored for these circumstances
* (**A** **P** g): Who should write the guidelines?
	* (**P** d): it needs to be a committee
	* (R *T* d): A broad range of expertise
		* (**P** d): someone familiar with the many aspects of autism
* (R *T* i): it is intersectional with other kinds of experience as well
* (**P** d): somebody who understands the sorts of problems and ways of communicating autistic people have
* (**P** d): somebody with expertise on GDPR
		* (R *T* g): Would you want to help write it?
		* (**A** **P** d): “I’m happy to”
* (**A** d): use existing guidelines as template: “I wouldn’t want to start from scratch, obviously, I’d want to know what is the process for moderating social media, what are the rules, and how might we want to tailor that to this circumstance”

### i) How should we manage access to the data?

* (R *T* d): a selection committee who could decide which researchers could access the data
* (R *T* d): specific options for individuals to choose where their data goes

### j) Allowing people to comment

* (R *T* d): “I think almost certainly the answer is ‘no’” [to, ‘should we allow people to publicly respond to posts?’]
* (R *T* d): “that is social media, and social media is a whole big thing, social media already exists”
* (**P** d): “yes, and this isn’t a new Facebook”
* (**P** d): put links to fora for discussion in code of conduct


## 5. Representing others

### a) Important to give everyone a voice

* (**P** d): If you could not report publicly on behalf of others: “my son’s experiences would never be heard”

### b) Consent

* (R *T* d): “It’s extremely difficult to figure out whether it’s possible to consent to sharing somebody else’s experience…my gut feeling is that, if people want to, I think we could accept if it’s for research, but that data will not be made public for any reason”

### c) Community Response

* (**P** g): danger of creating controversy and public argument
* (**P** i): “you will get parents on the one side who’ll say, my child is as successful as he or she is thanks to ABA, then on the other side you get, I am suffering deeply from PTSD – post traumatic stress disorder – because of ABA”
* (**P** i): Making the platform less welcoming for autistic people
* (**P** i): “be mindful that there are autistic people who will read it, and it’ll be their experience they’ll be thinking about, even though your experience is entirely valid.”
* (R *T* i): “some of the ways that parents sometimes characterise their autistic children can be upsetting to autistic people, and therefore might make it a less welcoming place”
* (**P** i): [examining example of potential controversial comment]: “’My tip is, this kid is trying to control you, and he needs to understand that this isn’t how the world goes, so be persistent, don’t take no for an answer, and all that kind of stuff’”, do you see what I mean, and you go… ’also understanding parent’s experiences will be valuable’, and they’ll go – ‘oh, it was hell, it was hell, he screamed and he punched and he did all these things’, I’m saying he, could be she, and you go, ‘yeah, I know, but that’s your experience of your son’s, daughter’s really bad sensory experience here’, but be mindful that there are autistic people who will read it, and it’ll be their experience they’ll be thinking about, even though your experience is entirely valid, because it is hell, when you’re trying to get somewhere, and your child has their arm wrapped around your neck and they’re pulling your hair, and often you kind of go, like, and this is a [tall] bloke, and you’re a little person, and everyone’s looking at you going oh, woah, yes, but actually his experience is probably worse than mine.”

## 6. Data Management

### a) Agency

* (R *T* d): “part of the point of the project is that people have agency”
* (R *T* d): “the whole point of the Open Humans project…is to empower people to have control over their own data, and that is essentially what we’re doing here”

### b) Changing consent

* (R *T* d): For me…it’s very important for people to be able to change their mind

### c) Which Groups or Organisations Should Learn from the Data?

* (*F* d): the department of transport…”so they can adjust transport for London with regards to tailoring it and assisting people with autism”

## 7. Contribution Channels

### a) General

* (R *T* d): “the problem with options is there’s lots…which can be complex, so, this is what we’re currently figuring out”

### b) Focus Groups

* (R *T* i): “I think you can feel from the focus of these discussions that it’s really hard to be part of a project this early on, there are so many options, and there are so many unanswered questions”
* (R *T* d): “So that’s exactly what we need in fact, that’s why these sessions are so useful, because you’re the pioneers of different solutions, and you can tell us this could be better, and then we can make it better”

### c) Personal Email

* (R *T* d): “that’s a private communication, and so we can’t use the comments for our research”

### d) Mailbox and newsletters

* (R *T* d): “So again, we were iterating the design of the letters, so the first one we sent people said was slightly too much information and too many options, so for the next one we made it simpler and specific in terms of what we were asking for.”
* (R *T* d): “So if you reply to this it only goes to [redacted] and me, it’s not a general discussion, but you can at least stay up to date and we’ll try to send monthly updates.”
* (R *T* d): “…it’s very vague, kind of blue sky, but there will be a time when there’s a fully functional platform and we’ll need as many people as possible to try and use it”

### e) Google Forms Survey

* (R *T* d): “…if we copied and pasted it into this box, then we could use it for research”
* (R *T* d): “I think it’s really important that something like this exists, we just need to do another pass through making it clearer about what the pathway is when you get to it”
* (*F* d): “The reason I suggested my version of Google Forms was…if you’re confused with GitHub and how to create an issue, I thought that this was quite a good way in order to get your information as a request item and then for that to be able to be translated automatically into GitHub, so you can interface not directly with GitHub, but for that information to be put into GitHub at some stage”
* (**A** d): “…on the first screen, it just mentions the citizen science platform, but without actually specifying that it’s about an autistic environments project, which isn’t self-contained, in explaining it enough.”
* (**P** d): “it’s not that bad, it’s just vague. It’s not that I’m confused by it, I just don’t know what you’re asking me.”
* (**P** d): “you don’t need to change it every week, you just need once to tell me what I need your feedback for is this and this is why I need it.”
* (R *T* d): “[It’s a big] amendment to ask the University of Cambridge ethics board to allow us to change the wording [of the platform ]each week, for example, but if that’s what people are telling us, that there will never be a case where a broadly phrased question is useful, we’ll try it, or we’ll come up with a bunch of different surveys”
* (**A** **P** d): “…as it is, it’s fine for me, but I’ve been to these discussion groups twice, so it’s clear to me what’s going on, but what about the people who haven’t been? I don’t know if they will know what to do with it, or what you expect from them”
* (**A** **P** d): An email along with the survey explaining what it is about would be useful.
* (**A** d): “I’d be happy to use that general way rather than specific correspondence.”


### f) GitHub

* (**A** **P** d): “this is a platform that open source developers use very extensively, so what we hope is that everyone if they want to would be able to come and contribute, but it’s definitely really useful for the developers”
* (**A** **P** d): include diagrams to make contribution pathways clearer

### g) Gitter

* (R *T* d):  “So this I would imagine is more likely to be used by developers, or maybe people who are both autistic and developers, and there would be a community of people here, but that doesn’t mean that it has to be anyone, but it exists, and we can support anyone to use it that wants to use it”

## 8. Ways of Working

### a) Diversity and inclusion

(* R *T* i): “people have multiple different identities, and so having them all work together is going to be…really exciting”

### b) Openness and transparency

* (R *T* d): Availability/accessibility of information
* (R *T* d): it will be a webpage, so anyone can get access to that just by going onto a webpage
* (R *T* d): demos to get people to do the first contribution… “little animated examples”
* (R *T* d): mailing list for people to get monthly updates

### c) Communication

* (**P** d): “I think contacting schools is a brilliant way to start”
* (**P** d): through Autistica’s Discover network
* (**P** d): partner organisations
* (**P** d): National Autistic Society
* (**P** d): parent forums: “you have to have it on there, for sure, 100%”
* (**P** d): other online groups
* (**P** d): word of mouth
* (**P** d): local councils (as they are mandated to provide services to people with special needs up until the age of 25)
* (**A** d): social media
* (**A** d): “In terms of finding adults to participate I think social media seems to be quite successful in finding me… I’m not a big user of social media, but the algorithms seem quite skilled in detecting my interests in research studies and they…pop up…on my newsfeed”
* (**A** **P** d): NHS distributing leaflets - offer leaflets about the platform when you get your diagnosis.
* (*F* d): Link to the Autistica conference using live streaming to promote the platform
* (R *T* d): Wait until contribution platforms are clearer before doing a big marketing push

00-project-documentation/community/focus-groups/18-september-2019.md METASEP
# Focus Group Data

## 18 September 2019

## Contents

1. [Value of project and motivations to take part](#1-value-of-project-and-motivations-to-take-part)
2. [Experiences of autistic people and their families in their daily lives](#2-experiences-of-autistic-people-and-their-families-face-in-their-daily-life )
3. [Platform design](#3-platform-design )
4. [Moderation](#4-moderation)
5. [Representing others](#5-representing-others)
6. [Data management](#6-data-management)
7. [Contribution channels](#7-contribution-channels)
8. [Ways of working](#8-ways-of-working)

## Key

#### Where From

* A = Autistica
* T = Turing
* F = Fujitsu

#### Specialist Role on Project

* R = Researcher

#### Connection to Autism

* *A* = Autistic
* *P* = Parent of someone autistic

#### Connection to Experience

* d = direct: experience, suggestion, or opinion of speaker
* i = indirect: witnessed or reported on behalf of someone else by speaker
* g = general comment

## 1. Value of project and motivations to take part

### Helping autistic people and their families

* (*F* d): “I’m interested in the enabling factors of the project”
* (**P** F d): “I have a [teenage] son with Asperger’s, and I’m really excited by all the prospects the work is going to have to make his life a lot easier”
* (**A** d): “I’m just really interested in helping other autistic people with sensory processing differences”
* (**A** d): “I dropped out of uni mainly because of sensory issues that I had at the time, so that’s why I’m interested in this”
* (*F* d): “…it’s extremely exciting…to look at the application or the technology that we can provide…to such an important cohort of users”

### Helping people more generally

* (*F* d): “it’s always about the stakeholders, and I’m here to make sure that we do enough”

### Gaining insight from autistic people

* (*F* d): “so it’s really important for me to be here and understand everyone’s opinions here because I’m going to be the one who makes things”

### Curiosity

* (**A** d A): “it’s quite interesting to see what the project’s going to be about”

### Allowing people to be heard

* (R *T* d): “I’m interested in how we collect lots of different people’s experiences without flattening them”

### To represent others

* (**P** i): “I’m here representing my autistic son”

### Helping educate neurotypical people and remove stigma

* (**A** d): “I lived my entire life thinking I was difficult, and I was annoying…but I now know how to represent it”
* (R *T* d): “one of the reasons I’m so excited about it is you could have neurotypical people read the experience and understand better”
* (**A** g): “we want to persuade members of the general public that sensory sensitivities are a real thing”

### Creating connections/community

* (**P** g): “there’s so many things that are shared in common but if you don’t share it everybody thinks, ‘I’m the only one’”

### Sharing expertise and personal perspective

* (**A** d): “I’m here because I’m autistic and also very opinionated…this is kind of my thing”
* (**A** d): “I’m autistic so I’ve got an awful lot of experience which I hope to contribute to the group”

### Supporting and improving research

* (**A** g): “recently [in] one of the journals someone did a meta-analysis called ‘sensory experiences’, and it’s so prevalent it should be included in the core characteristics of autism, which it isn’t currently”
* (**A** d): “I’m very interested in what are the ways the data is captured – how it could be interpreted with fidelity, so we don’t lose the meaning”
* (R *T* d): “I’m really interested now in how we can do open and ethical and transparent research which is slightly more impactful on a shorter-term basis than neuroimaging”

### Long term benefits

* (**A** d): “I think the IT programme project is always the most exciting, because it can leave a lasting legacy”

### Learning

* (*F* d): “I’ve learned more about autism in the last 6 months than I knew ever before”

## 2. Experiences of autistic people and their families face in their daily life

### General

* (**A** **P** d): “I’m still recovering from a bit of shock because the council is refurbishing the town hall... I had to travel out of the building in a lift which isn’t finished, so to my mind if someone lit a cigarette the lift would blow up”

* (**P** i): “my son’s hearing is extremely sensitive, so he needs help” – son can hear conversations others would not be able to, and is troubled by sounds such as flushing water.

### Misunderstanding and Stigma

* (**A** P d): “…by the time I got to the ground floor I was shaking, and had to try to sign out, and explain to the guy why I was upset, and he didn’t seem to think it was of any importance whatsoever”

### Communication

* (**P** i): “…although my son’s autistic, and he is very high-functioning there is a point where…he is very non-verbal, so I have to meet him halfway in sharing something”

### Travel

* (**A** d): sound of buskers while walking in Central London – “they’ve all got bloody amplifiers now haven’t they and it’s horrific, absolutely horrific”
* (**A** **P** d): “why does TFL think I want to listen to loud classic music in a bus station, you know, Ride of the Valkyries or whatever, it’s making me feel quite nauseous…”

## 3. Platform Design

### General

* (R *T* d): “everything about this can change, everything about this probably will change, based on what you tell us today”
* (**A** d): have an organised, online discussions forum
* (R *T*  d): “…maybe you could upload a photo, maybe geotag where you put that photo”
* (R *T* i): “if you’re currently experiencing sensory overwhelm, an overwhelming sensory environment, that is probably not your most chilled out moment to go ahead and fill out all that information…we…probably will need to add in an option to go back and do it later”
* (**A** d): “…most importantly I think from a motivation point of view, it’s got to be fun”
* (**A** d): “it’s got to be educational”
* (**A** **P** d): “you could give options for options, so you could say, for example, ‘would you like a template?’”
* (**A** d): there are two important aspects: what can autistic people do to change their environments, and what can autistic people do to protect themselves from their environments.
* (**A** g): “if you’re autistic you want to know…[how] are other autistic people with their expertise…dealing with it? Have they got something to solve the problem?”
* (**A** d): “I would really love to have sanctuaries marked on”
* (**A** g): “we want to make it as accessible to as wide a scope of the autistic community as we can”
* (*F* d): if there were multiple pages you’re guided through, have the option to pull out, but still submit information already provided
* (R, *T* i): “saving for later and…coming back to a draft is really, really valuable”
* (R *T* d): “one of the reasons that I as a neurotypical person…quite like the one box, is that you can write as much or as little as you want…”
* (R *T* i): “the flipside is it’s super overwhelming and there’s too many things that you could write, so I understand the need to have some structure, but I don’t want the structure to be a limiting factor on people actually clicking submit”
* (R *T* i): “really important to road test and user test with autistic users”
* (*F* d): prioritise a single text box, test it, and add granularity later
* (R, *T* i): start with three boxes and then extend it, “we’ve heard it so loudly from other conversations that a single box is just not a viable way of inputting your experiences”
* (R *T* d): “if somebody just says, ‘tube was busy’…that’s still really valuable, you don’t need tonnes and tonnes of information”
* (R *T* d):  drafts could be saved but would stay private, and would only be accessed by the person writing them
* (**P** **A** d): have ‘flags’, so specific institutions (such as, e.g. TFL) could be made aware of problems
	* (*F* i): “I think…the analytics that will be happening post input”
* (*F*, d): a simple answer is possibly to put in a hashtag feature, and “in the analytics you can then do a pickup on a hashtag and then on a topic.”
* (**P** **A** d): highlight that as an option, “because I’m still very used to the hashtag”
* (**P** **A** d): important to deliver on promises: prior experience of being incentivised to use an app (Molehill Mountain) because it promised to give a mood graph, and was frustrated when this wasn’t offered
* (**A** d): automatically link up to physiological data, for example from a Fitbit, so it could be recorded in real time.
* (*F* d): “I think it’s probably quite far down the track in terms of development, but I think it’s definitely worth having on there that we could potentially look at including physiological data”
* (**A** d): have graphs linking data
* (*F* d): there are potential API options
* (R *T* d): Open Humans [backend provider] allow ways to link up with multiple other personal data sources – including your Fitbit, your genome, your google search, your Twitter account – once you’ve entered your experiences onto the platform, you, “could upload your own data and you can see how those things match up together, so that I think is extremely easily supported, outside of the scope of our project”
* (**A** d):  “I think it would be useful to create age brackets, because it would be extra data for the research…it could be that certain sensory processing difficulties present to the greatest severity in a particular age group – I think that would be very useful to capture”
* (**P** *F* d): would be useful to capture age when you are diagnosed
* (**P** *F* d): platform could be a route for people to come to find out about autism and then get a diagnosis
* (**A** **P** d): translation function: “we’re all being quite naïve that the input will be in English”
* (*F* d): Input would be free text, so could take any language, but language of navigation of site interesting to consider
* (*F* d): “potentially we can look at that as a longer-term development, so initially say that the interface is in English but feel free to input in whatever language you wish”
* (**A** **P** i): ”a lot of the autism advocacy community…is European and Somalian, and they continue to complain about health interfaces that they really struggle with trying to relay their information even though they’re given the opportunity because when they really struggle with something it’s emotional, but they immediately revert back to their native language and they’ve got no way of filling it in”
* (R *T* g): “one of the great benefits of citizen science is that it can be a totally global participation…even though it is more likely that people who engage will be English speakers at the beginning”
* (R *T* d): put together an explanation and documentation of why English has been prioritised
* (R, *T* d): “bake into the design that it can be translated, you can collect things in different languages”

### Use it to see your own data and input (**A** d)

* (**A** d): make it something that an autistic person could use with their mentor – help create plans
* (**A** **P** d): “definitely” want to see own data and input
* (**A** **P** d): would help to trace causes and correlations based on patterns of occurrences
* (**A** **P** d): “…with the accumulation of data…you begin to see connections in your own life – and that adds value, you know you were talking about increments of value, but increments of value going both ways”
* (**R**, T d): because it might be hard to fill in a form in the moment, “…it won’t be the case that you can assess what times of the day people are feeling most stressed based on the data that they input”

### Navigation

* (**A** **P**): make the address, “something really specific, like Autistica/AlanTuringExperienceLog”
* (**A** **P**): make the address, “shorter and kind of clear, [so] the minute you go in and add [your] experience, it’s consistent”
* (**A** **P** i): ways of entering text and navigation are different on different devices, so for older people it might help to have the journey guided by arrows, for example
* (*F* d): a joystick on the page, that…navigates you, demonstrates how something should be filled in
* (**A** d): sequential navigation, “it’s got to be… logical…if you do this option, take you to the next option”

### How should we ask the research question?

* (**A** d): “…the question, share your experience, is incredibly general”
* (**A** d): split the question up: “Where were you? What time was it? What happened? What effect did it have? and What would you like instead?”
	* (*F* d): you could break those down if you wanted prompts
* (*F* d): limit it to 3 inputs where you could put in a couple of those at the same time
* (*F* d): capture recommendations and learning
* (**A** d): “…it’s crucial to have a field that can capture…learning and solutions”
* (**A** d): Make the question about solutions as well as experiences
* (**A** d): “I want to be able to say and this is what I think would have helped – you know, it may be that it’s not possible to do the thing, you know we can’t probably make the tube quieter very easily, but we do have ideas about what might help and we should be including those”
* (**A** **P** d): include templates: “it would be cool to have an actual template, or, at least you could have the option, right? If you want to try and have this as clear as possible, definitely clicking through similar ones”
* (R *T* d): “I think…there’s a chicken and the egg problem because you’ve got to have a bunch of people to find similar ones”
* (**A** d): give people a response when they’ve submitted
* (**A** d) “…after you’ve clicked on ‘share’ there’s no tangible message that it is shared.”
* (**A** **P** d): specifically ask for physiological or emotional information, for instance, does it prompt heart rate, swearing, shouting, emotional response?
* (*F* g): record positive as well as negative experiences: “there is a lot of psychology that shows us that the more we focus on negatives, the more we find it”
* (R, *T* d): “there’s this expectation that when people talk about autism they’re going to be looking for negative things, and actually there’s loads of benefits to sensory processing differences”

### Motivation

* (**A** d): make motivation salient
* (**A** d): “what motivation is there to actually put things on there?”
* (**A** **P** d): activity log for Google Guides helps to track input: “it’s my incentive to keep doing them because they let me know I’ve done this, this, and this, you’re in the top 1%, it does keep me going”
* (**A** **P** d): “that’s my incentive…I’m being told that my contribution is valuable”

### Make scope of research clear

* (**A** d): “I think you need to have some kind of link to explain what research this could be used for and the limits of what it could be used for”
* (**A** g): “…there is an enormous lack of trust among autistic people when it comes to research”
* (**A** g): “I think that needs to be very, very transparent, because there is that lack of trust”

### Reading others’ experiences

* ( R *T* g): Would you be interested in reading other people’s experiences?
* (**A** d): may cause additional stress: “don’t particularly want to be aroused, as it were, by reading about things”
* (**A** d): “have a facility where I can go and see other people’s experiences, because that might be most useful to me”
* (R *T* g): viewable-by-others option means people get something more immediately valuable for themselves
* (**A** d): People can share solutions with each other: “I can’t tell you how many people don’t know that these exist – these are industrial ear defender headphones with Bluetooth, they are what you use if you want to…listen to music while operating an automatic drill”

### User Interface

* (*F* i): “what are the things with autism to think about lining it up with a visual interface, that is not itself going to be a sensory issue?”
* (R *T* d): “there’s a balance between being really boring…and being too stimulating, actually”
* (**A** d): an accessible colour scheme
* (**A** d): “I think it should be more visual than…written”
* (**A** d): “the words used, or any writing used” should be “well-spaced out and in a good font that anyone could read - and obviously a screen reader could pick out as well”
* (**A** d): “make the platform accessible for…non-verbal [people]”
* (**A** d): “maybe when you’re designing it you can have different colour schemes, or choose your own one, so that it’s not overwhelming”
* (**A** d): the text boxes could be framed like a mirror, with a wooden background so the text boxes are a mirror on which you write your reflections, “so it’s a very peaceful thing, it’s a very natural kind of place, where you could just relax and write”
* (**A** d): it’s got to be inviting, it’s got to be visually attractive
* (**A** d): it’s got to be easy to use,
* (**A** g): upload pictures of situations that were a problem, so that organisations can go onto the platform and easily see what to change, “because visual things can have much more impact than just…a dense script”
* (R *T* g): would probably be able to take visual inputs – analysis of them out of scope for user interface; would liaise with colleagues who do computer vision
* (**A** **P** d): “you don’t want too many things on the page at the same time, because it’s just too much”
* (**A** **P** d): have a satisfying noise when you submit information
* (*F* i): have the same information available to you whether you’re on your laptop or your phone
* (**A** **P** d): “that actually matters to me because I… switch between android and iPad, and It’s how I choose to live my life, but it can be annoying when things don’t work out”
* (**A** **P** d): “I get very frustrated by a countdown of the amount of characters I’m using”
* (**A** **P** d): “please don’t put a word limit, and especially not seeing it count down, because it’s very horrible”
* (*F* i): include notifications, which ask how you are feeling, to prompt those who might not be as expressive (for example, ‘how happy are you feeling?’)
* (*F* i): “…we might be picking up people who are in distress but they’re not reporting it because they don’t want to fill out a whole field”
* (**A** **P** d): found filling in diary prompts every day “irritating”
* (**A** d): “The kind of pop-up, how are you feeling right now…should probably be something that people opt into”
* (**A** d): “…green would be a good colour – more inviting”
* (**A** **P** d): “Yeah, there are some great shades amongst the greens aren’t there, there’s a nice sort of fresh spring, and then there’s that, what do you call it, a middle, sort of forest green –”
* (*F* d): “Tahuna font is a bit softer than Ariel, so maybe give that a try”
* (**A** **P** d): icons need to be slightly bigger
* (*F* d): have a glossary or dictionary of terms

### Accessibility

* (**A** d): Take into account learning disabilities as an accessibility feature:
* (**A** i): “it must be very difficult for people who are not as intellectually capable, and quite often they probably just give up in frustration”
* (**A** i): have a simple graphic at the side explaining site navigation and what steps to take
* (**A** d): make a button you can press for help to come up
* (**A** d): pop-up window that explains to you what the text box is, or gives you a visual guide saying exactly what buttons to press
* (**A** d): less information on one page: “I’ve always been better if there’s less information on one page”
* (**A** d): bring one thing up at a time
* (**A** d): have an arrow bar to move onto the next piece of information, rather than having to constantly scroll
* (**A** d): “just one thing or question or visual per page, and then…press next”
* (**A** **P** d): that would make it better paced
* (**A** **P** d): have a maximum of 5 things on a page at a time
* (*F* i): research could be quite self-selecting, “…in a lot of areas the quietest people are the ones who need the most help”

### Longevity

* (*F* d): “what we should be thinking about as well is…the next generation [of contributors]…they should be able to contribute just as easily, and so if we can think of any ways to make that easier, then we can start putting those into the process now”

### Benefits to user of platform

* (**A** d): adapt features such as those of Brain-in-Hand to give people self-knowledge: “it…helped me to work out what my triggers were, and what days were hard for me to be at uni or anywhere”

## 4. Moderation

### How should we moderate?

* (**A** d): provide some kind of feedback that moderators have experience, because otherwise it just “disappears”
* (R *T* d): “you do need to know that a) the research is going ahead, and b) you know that it might not appear for 2 or 3 days or whatever that time scale is”
* (R *T* d): comes down to, “how do you make everybody feel safe in a community?”
* (R *T* d): “…we probably won’t moderate for [experiences] only used in research”
* (R *T* d): “there needs to be an option of safeguarding people and making sure that it remains a welcoming environment, and space for people to browse and put their experiences on, so we have a really big unknown at the moment which is how that process will work”
* (*F* ** P** d): one option would be to moderate all comments from new users, and if they dependably don’t contravene code of conduct, put them into a ‘do not need to moderate’ category
* (R *T* d): “things can slip through the net, so it is a balance I think between feasibility and an ideal system”
* (R *T* d): “there is a natural language processing option for some types of moderation, but it is not a perfect option, not an ideal safeguard, and there are problems with potential biases”
* (*F* d): people could flag comments for moderation, and then be prompted to say which part of the code of conduct it violated.
* (*F* d): if comments flagged multiple times they could be prioritised for moderation
* (*F* d): moderators could cross-reference their decisions against general public
* (R *T*  d): “that also means in practise that the whole community of people are moderators, and it’s not just a limited group, anybody could flag a comment, and everyone is involved…it’s more democratic”
* (*F* d): flagging comments would also help to bring up issues that might not have been previously thought of
* (R *T* d): “you can remove data from the public immediately…that doesn’t mean other people haven’t seen it, or…copied it, and I think we have to be realistic about what you can retract.”
* (**A** d): “from a user point of view, people have got to feel safe and comfortable while using the platform…if you get spam or stuff on there, or comments that have not been moderated out, and you don’t feel comfortable with it, then they won’t use it!”
* (**A** d): “I think you have to work on the basis, unfortunately, that every single corner of the internet which doesn’t have moderation just seems to fill up with Nazis, they’re everywhere, and it happens in the most unlikely places, so I would say at least for the first couple of times you need to moderate the users”
* (*F* d): “there’s the…malicious side which you need to be wary of…but also I think you need to be helpful to people as well”
* (*F* d): if someone puts in personally identifiable information, “we should be able to pull that out for them… this is a more positive aspect and a helpful side.”
* (**A** d): “you can’t just say, ‘this has been moderated out’, you’ve got to provide an explanation”
* (R *T* d): should we redact parts of comments, or refuse comments entirely?
* (R *T* d):  “if someone had written it to include information that it was dangerous to put online, but the rest of it was fine, could we send a suggested edit”
* (R *T* i): “it may be offensive to somebody to have their own experience edited back to them”
* (**A** d): have a panel of autistic people to look over trends in comments

### Self-moderation

* (**A** d): include option to moderate out distressing or negative experiences: “if I’m feeling particularly stressed and I’m going to go on a platform, I don’t want to be reading…a lot of what went wrong on your day, I’d rather click on a button that filters to the – what happened, and what went well, and who accommodated you well”
	* (**A** d): different types of experience could be colour-coded
* (*F* d): you could blacklist people whose comments you didn’t want to see, or only see your own comments

### Who should moderate?

* (**A** d): Should reflect people who contribute “I think that it should be a mixture of people, people who are autistic and maybe parents of autistic people, because then it’s a wider scope…if there are gonna be parents, guardians, etcetera…who are contributing, advocating for the autistic person that they care for, that are in their lives…then there needs to be people who are also in that category to moderate, not just coming from an autistic person and vice versa”
* (**A** d): important to have more than one person look at each comment
* (**A** d): “they need to be objective, something that might be okay for one person might not be okay for someone else.”
* (**A** d): option to have multiple people look at a comment without necessarily communicating with each other (but you could see their decisions) - all of the different moderators put their response and then somebody else will collate all those responses (presumably majority sway)
* (**A** d): “I think you’re gonna need a team of moderators especially if this becomes successful otherwise it’s going to get way too much for one person.”
* (**A** d): “if you’ve got somebody who’s submitting regularly, who never goes outside the guidelines, you could perhaps invite them to be a moderator”
* (R *T* d): This could be a branching option, where moderators could select other moderators, and is therefore quite scalable
* (R *T* g): try to make sure that panel is representative of, not just autistic people but different cross-sections, because they will have more diverse lived experience

### What should we moderate for?

* (R *T* d): “information about someone else that could be either offensive or compromising in some way”
* (R *T* d): information about someone else that might be distorted
* (R *T* d): comments demonstrating animosity to autistic people
* (R *T* d): “we also want people to be able to express a wide range of opinions, and not to shut that down”
* (R *T* d): “certainly how I was imagining it was that we wouldn’t moderate for research”
* R *T* d): “there’s nothing that’s not useful for research if it’s handled well by analysts”, for example, exposing existing prejudices
* R *T* d): what’s public should be, “of benefit to autistic people and their families”, and “representative of autistic people”
* (**A** d): “…If you have your clear criteria, then it either does or it does not fall within those criteria” – would make the task of moderation easier.
* (**A** d): “I think you need to have a system in place for what you are going to do to deal with it if you get people posting not in good faith…in some of the dark…nastier corners of the internet they have a real thing about autism…using it as a slur against people, and taking the piss basically”
* (**A** d): this could also be a problem not just for posting on the platform, but if comments get reposted: “if this shows up and somebody posts it to 4chan, you are going to get thousands of malicious posts”
* (**A** d): spammers and scammers: “the National Autistic Society site is always getting done by spammers, people who are trying to sell you false passports or all this sort of stuff.”
* (*F* i): personally identifiable information: “someone might…have had such an anxious experience…that they might accidentally put in their name…or their home address”
* (**A** d): “people deliberately trying to bias the data by putting in accounts…which pertain to sensory processing but aren’t actually authentic?”
* (**A** d): if certain themes come up a lot or, “if there is a group of people who are pushing a particular agenda, or a view, or an experience”, authentic autistic people could moderate and say, ‘no, that’s not really us’”
* (R *T* g): offensive language?: “in a sense there’s something very rational about the expression of anger and frustration, and also very valuable… on the other hand, that could be offensive to some people, depending on how it’s expressed”
	(**A** d): “I have no problem with swearing, I love swearing, I’m a very sweary person”
* (**A** d): potentially have an option in your profile to hide comments with offensive language.
* (**P** *F* d): automatically convert swear words into other words
* (**P** *F* d): would need to have an explanation in the code of conduct to say these sorts of words will not be published
* (**P** *F* d): consider which age you would moderate profanities for: “my [teenager] would want to be sharing his experiences, because he’s very forthright about sharing experiences… I don’t particularly wish for him to see a whole bunch of profanities”
* (**A** d): things that are offensive such as racism and sexism.

### Tags

* (*F* d): “you can take the tags that relate to the experience, and then you don’t actually see the free text of the experience, unless you want to investigate it for yourself”
* (**A** d): It could be a good thing to have suggested tags
* (**A** d): “you would have a whole bunch of people reusing the same tags”

### What would help?

* (**A** d): clear instructions, “I think you need to have a very, very clear set of rules”
	* (**A** d): rules should use autism-friendly language
* (**A** d): ask the moderators to accept or reject according to whether or not it breaks the rule, rather than subjective judgement
* (R *T* d): “would you imagine the moderator would have to say specifically ‘this is the thing in the code of conduct the comment contravenes’, or is it more general?”
* (**A** d): clearly aligning decisions with rules “…would be helpful, as somebody who…because I wasn’t diagnosed until I was 27…spent an awful lot of time being told, ‘how dare you, you were just rude to make that remark’, and I’d go, ‘what did I do?’, and they’d go, ‘you know what you did’…it’s quite useful to be told what you did”
* (**A** d): “I agree…clear guidelines of what should and shouldn’t be moderated”
* (**A** d): “give people a (limited) ability to argue back”
* (*T* R, d): “…one of the benefits of having the moderation system in place is you could have that conversation privately, so it’s not going to be a problem for other participants, it’s between the person who submits and the moderators”
* (**A** **P** d): give people specifics of what they could change for their comment to be included, for example if they are using swear words
* (**A** d): have clear feedback which is “sensitive, non-judgemental, and constructive, saying how they would alter things”
* (**A** d): have rules in the code of conduct about crusading
* (**A** d): ask people from Autistica what they think should be in a code of conduct
* (**A** d): use other codes of conduct as templates and adapt them
* (R *T* i): “…involve lots of autistic people, and autistic people’s families, in building it”
* (**A** d): useful to have a generic code of conduct, email that out, and get feedback on it
* (**A** d): “my first thought is, this is such a vague question and I can’t think about what I’ve got to say…but if I saw one, I’d be able to say, okay that’s not very clear maybe, or this needs to be adapted, or this needs be added, but it’s very difficult to just start from a blank state”
* (R *T* d): having some kind of prototype version, but then getting lots of different eyes on that version

### Allowing people to comment

* (**A** d): May create arguments: “…if people could message, like, say about, or comment on the experiences, there’s pros and cons to that because if it’s going to be like a thread style, sometimes there could be arguments”
* (**A** d): “I’ve been…guilty of it by accidentally saying something that’s offensive, or sounds rude”
* (R *T* d): replicates existing platforms: “my reasoning, although I would be happy to discuss it further, is that I think there’s lots of places online to have those sorts of discussions about things, and I don’t feel like building another Twitter”
* (**A** d): personal experience should not up for debate from others, “because it’s my experience, there’s nothing to debate about it - what does some other random know about it?”
* (**A** g): “I think that will encourage good will, because it will encourage people to feedback more”

## 5. Representing others

### General

* (**P** *F* i): “…my son very much is his own person, and he would want to go over what you’ve done anyway…so you’d never be able to get away with a wrong submission”
* (**A** **P** i): “there’s no way [my son] is having the same experience I am, but he is experiencing some things which he can share with me”
* (R *T* d): “I feel like it’s important that we do allow it”
* (*F* d): Tag experiences, and instead of publishing full experiences in list, publish the tags
* (*F* d): “…you take the free-text field about how the experience could be improved, and put that against the tag…because it’s very much more positive”
* (**P** d): “we’re not going to actually get away from parents who through frustration have what they perceive as a negative experience”
* (**P** d): direct parents to places that might be useful, if they want to talk about their own experiences, instead of having them use this platform
* (R *T* d): for things which aren’t appropriate to the platform, include sets of resources that could help with people’s issues
* (*F* i): “I think that what you say is great, because people do need to understand what platform to go onto to try and get support from other parents, but maybe this is not the right platform”
* (**A** **P** d): “Yep, yep, so setting some scope, I mean we do need some scope!”
* (**P** *F* d): “oftentimes the reaction of the parent or the caregiver can exacerbate the situation – that’s actually a piece of data you might want to research and understand”
* ((R *T* d): The ways parents and carers narrativize and understand autistic people’s experiences would also be useful for research.
* (**P** *F* d): “…it takes an awfully long time to figure out whether it’s a hug that helps or standing back or not – so those are again sensory things that happen that contribute to the data”
* (**A** **P** d): “one of the best phrases is, ‘just say what you need’, it’s so simple”
* (R *T* d): “it would be really useful to capture…not just what are the experiences but how do people respond to the experiences, what effect did that have?”
* (**A** **P** d): “being able to reflect on experiences, decide what to do next, and choose solutions would be useful.”

### Important to give everyone a voice

* (R *T* i): “I wonder if for parents, there is something about the parental experience as well that needs to be captured?”
* (**A** d): “maybe have a separate section for parents, but I do think you probably want to keep them separate”
* (**A** i): “one of the problems is that parents do feel that they’re not being heard…there needs to be a way of hearing what parents have to say, and to give parents support, without turning it into, ‘God, this is awful’, so the big ‘but’, this doesn’t necessarily have to be the place to do that”
* (**A** i): could be useful for some parents, especially if it’s a post about what could be done to improve an environment

### Autistic voices being drowned out or elided

* (**A** d): “There are a lot of places where autistic people are sharing their experiences, and they get overwhelmed by other people who have an autistic relative or something, and they have someone else talking over them…it can get really hostile, because I think there are a lot of people who haven’t really absorbed the fact that we have an experience as people, and they’re still thinking of us as difficult children who have to be managed, as opposed to people who have their own experience, and that’s my concern…that we’re going to end up with the same toxic environment if we do that.”
	* (R *T* d): “I think that has to come through the moderation”
* (**A** d): “…sometimes…they’re complaining from a neurotypical point of view about how difficult the child is, or the adult is, and I kinda don’t want that…because I feel this is supposed to be a safe platform for autistic people to talk about their experiences”

### Guidance for representing others

* (**A** **P** g): make sure, “it’s gone through people who might have insight as a parent or a carer, and it’s submitted with the approval of the cared-for person” – this could be a prompt
(R *T* d): “there’s still a problem with that though, the carer saying yes, even though they haven’t actually got that from people”
* (**A** **P** d): “I’d hope that they’d be honest, because we suffer very much from being lost in translation… I would censor myself”
* (**A** d): “I would be absolutely fine with, ‘we went into a supermarket, Jack became upset because the lights were flickering again, this is something that has bothered him before’, whereas I would have a real problem with the parents saying something like, ‘We went into the supermarket, Jack had a bloody meltdown again, I hate it when he does this, it’s so difficult being me’, because we do see an awful lot of parents complaining how difficult we are to deal with – people like us – so I think there needs to be something in there about this group has to focus on the person’s experience not the caregiver’s experience.”
* (R *T* d): “it should be about the autistic person’s experience and giving it as much fidelity as you can”
(**A** d): “when you ask about a sensory experience it’s about a sensory experience, it’s the autistic person’s sensory experience, not the parent’s. They might be having a psychological experience, it’s not about sensory processing differences”
* (**A** d): “it’s very difficult to make a place welcoming to autistic people when you also have a lot of neurotypical people explaining about autistic people”
	* (R *T* g): “that could be a key feature of the platform’s code of conduct”
* (**A** d): “I think that needs to be a feature in there somewhere, think about how you word it”

### Suggestions for processes

* (**P** d): “I think it might be useful to have a sort of intermediary space where you can share that with your caregiver or your parent…so they can see your experiences, and just look at your experiences, but nobody else’s”
* (**P** d): “that’s helping make it more understandable, it’s about how they can adjust their own environments, from a caregiving perspective, so to help that individual”
* (R *T* d): have a collaborative submission, “so one person would write it but another person with their own account would verify it?”
* (R *T* d): potentially “an added level of complexity”
* (**A** d): have a separate space with carers or friends where comments could be moderated
* (*F* d): a template could be set up by the caregiver, and then that could be instantiated by the person being cared for during each experience
* (R *T* d): “the platform could collect information from parents, but it may not make visible the experiences of parents, we could mostly aim for that?”
* (R *T* d): “we want this space to be…most in the voice of autistic people, but it would be quite interesting from a research point of view to also be able to capture the experiences of parents, for research purposes, for example to compare and contrast whether people see things in the same way or not.”
* (R *T* i): “if you were to enter experiences on someone’s behalf, that seems like it needs a special kind of attention to moderate”
* (*F* d): model on GitHub pull requests: a parent or carer could upload an experience, but then the autistic person would receive a notification, and they could then agree or disagree to it being submitted
* (R *T* d): “that’s also the kind of process whereby we could potentially collect some metadata to see how often different kinds of experience were accepted”
* (R *T* d): the disadvantage could be that it makes the structure and interface more complex
* (**P** *F* d): important to consider age as well, may be more acceptable for parents to comment on behalf of younger children
* (*F* d): key difference between a caregiver assisting a person to give an experience, and the parent giving their own perspective on what they are seeing
* (**A** **P** d): If you segment the population into autistic people and parents, you need to account for people who are both, who may be filling in an experience for multiple people at once:  “I don’t think they should fill it in twice, as the parent and as an autistic adult, to make that decision”
* (*F* d): have a checkbox at point of the submission of the experience if you are submitting on behalf of someone else
* (R *T* g): “one possibility for the public comments is that we could exclude ones that are submitted on the behalf of someone else completely”
* (R *T* g): “the disadvantage of that would be that it would be a whole demographic, so a whole set of people on the autism spectrum who then couldn’t connect to each other”
* (R *T* i): “parents might really want to connect to other parents”
* (F, d): flag comments made on behalf of someone else for a greater level of moderation

## 6. Data Management

* (R *T* d): separate tick-boxes for sharing with research or publicly: “…what’s important here is that you can choose either, or both, so it depends on…the individual person who’s filling in this form – it depends what their motivation for sharing their experience is”
* (R *T* d): “you can delete [your experiences] if you decide in the future you actually don’t
want that to be there anymore”
* (**A** d): What happens if you don’t click either option?
* (R *T* d): you would be shown a series of your own experiences, and some researchers could see them, but they would not be made public or used for research
* (**A** g): “…if you use it for research will you get contacted in any way?”
* (R *T* d): “that is an open question – so can you tell us would you like to be contacted, or not be contacted?”
* (**A** d): “I guess it depends on the kind of information that I’m sharing – if it’s not something that I really want to revisit again, then maybe not”
* (R *T* d): consent for future purposes (don’t need to be re-contacted but can withdraw) an option
* (R *T* d): the way that we want to design the platform is that you can remove the consent. at any time, and that’s an important point
* (R *T* d): more fine-grained consent checkbox, with more frequent recontact, also possible

## 7. Contribution Channels

### General

* (R *T* g): “there will be a range of levels depending on your technical ability and what challenges you are able to go through to access it”
* (R *T* g): “I think the ideal is that we would have lots of options, so people with different preferences would choose the ones they like best”
* (**A** **P** d): found colour-coded visual diagram of different options useful
* (R *T* i): “I think if someone turns out to be very challenging but it’s not obvious from the outset that it’s going to be challenging, that’s much more irritating than if it’s clear from the start that you probably need some sort of technical background”

### Focus Groups

* (R *T* d): “a treasure trove of ideas”
* (R *T* d): ‘…one of the things that comes out of the discussions is how much people’s thoughts and ideas and priorities exceed the scope to discuss them in person’

### Google Form

* (R *T* d): from a research perspective this is the preferred option, because we have ethics approval, so anything that gets put in here can be used for research
* (R *T* i): “this is a way to reach the people who may not be able to join the discussions in person as well…who may struggle to reach the venue”
* (R *T* d): a way to reach people who have additional thoughts
* (R *T* g): you could always fill this in as many times as you want to
* (R *T* g): everything that is entered is public, but participants will be anonymous
* (R *T* g): all comments will be moderated by the research team before they are published
* (R *T* g): “the reasons [the question] is so general is that we didn’t want to impose anything on anyone, we just wanted the ideas to come from you”
* (**A** d): “’needs, priorities, desires and concerns is far too long’…is there a word that you could use that covers all of them like ‘expectations’ or something?”
* (*F* **P** d): it could be broken up to make it more precise
* (**A** d): “I think you do need to split it up into: ‘what works?’, or, ‘what do you want the website to be like?’, or, ‘what different sort of posts and experiences would you like?’”
* (**A** d): “What do you want to get from it?
What are the most important things for you?
Do you have any more concerns?”
* (**A** *A* d): splitting the box up might be problematic if you just had a random thought come into your head
* (**A** d): you could always have a ‘miscellaneous’ box for those sorts of comments
* (R *T* i): splitting it up might make people feel they have to answer a series of questions, but they might only have one thing that they want to express
* (*F* d): “You could just use the same approach of taking the form and generating a user story, so, ‘as an x, I would like this because, for this reason’”
* (*F* d): If you design the form to ask questions like user stories, it would be fairly simple to translate it over to GitHub.
* (**A** d): “’what information would you like me to know about blah blah blah’ is a very long way of saying, ‘what do you want us to know?’”
* (**A** d): “’tell us what you want’…it’s very indirect, it’s quite irritating”
* (**A** d): “If you [ask] tell us what you want us to know, it’s an even broader question, it could mean absolutely anything…we need to ask questions that are actually relevant to the project.”
* (**A** d): “you could put it very simply – ‘what do you want this project to do?’ And then you could split it down into the areas that you might want to contribute to”
* (**P** *F* d): “from a usability perspective oftentimes we’ll ask a yes/no question …you don’t see the box if you don’t have a concern, but if you do you can put it there”
* (**A** **P** d): if presented with a word limit, “I immediately disengage… I expect you to design it so that I am not going off on tangents and going nuts”

### GitHub

* (R *T* g): “it’s…open to anyone…[but] it requires some technical proficiency”
* (R *T* g): found GitHub a really valuable way of working with autistic collaborators, “because we could have a discussion”
* (**A** **P** d): “I thought it was quite useful to have somewhere to come, I did relate to it
* (**A** **P** d): “It was my first time using it…so I’ve got the jitters about GitHub and things like that chart forum”

### Gitter

* (R *T* I): “in theory it’s open to anyone, anyone who wants to chat can make an account and join and be part of a conversation, although it may not work that way in practice”
* (R *T* d): it can be anonymous but linked to your account
* (**A** d): “I don’t like group chats…I get overwhelmed with it, especially if someone keeps tagging me…asking me questions, I wouldn’t really use it unless I had to”
* (*F* i): “this sort of thing is really useful for developers, for the people who are actually involved in building the code… if you find this to be a little intimidating, I wouldn’t worry about that.
There will be another way to give your thoughts and your requirements and this is most useful for the programmers”

### Website

* (R *T* i): “I guess this is the easiest way of finding out about the project”

## 8. Ways of working

### General

* (*F* d): “…at this stage we’re a really blank piece of paper, and we’d like to get some initial thoughts from you guys that we can then put onto our backlog”

### Collaborative

* (*F* d): “…what I’d really love to see is the connections just to be created between people, if you want to know about something, if somebody from our team wants to understand something from your perspective, let’s have that conversation”
* (*F* d): “there’ll be some members of the team that you’ll work with more regularly, so we need some form of structure to this”
* (*F* **P** d): “it’s very important that you’re engaged throughout this process, because really we’re building this for you, and with you”

### Agile

* (*F* d): “agile doesn’t lend itself to sort of old style, traditional project management, but it does still require a degree of structure to it”
* (*F* d): “devops as a concept is essentially where you put your programmers and your operations people together, then we get things to happen much more quickly”
* (*F* d): “– that’s what agile is all about, we can change direction if we need to, if we’re going down the wrong track it’s very easy for us to just stop and go with the new requirement”
* (**P** *F* d): “bring stakeholders in really early into the conversation and talk to them lots, on regular occasions, and then show them throughout the entire lifecycle”
* (**P** *F* d): requests always go on the backlog, it doesn’t mean that they will be built, but they will be prioritised
* (P** *F* d): “The reason that it always, always goes on the list is because it might not be a good idea today, but it might be an incredible idea in a while”
* (**P** *F* d): “we try to keep the acceptance criteria as crisp and clean as possible”
* (**P** *F* d): “very generally you want a really stable velocity”
* (**P** *F* d): flexible in pulling backlog into sprints depending on team’s capacity
* (**P** *F* d): “in each one of these two-week cycles, not only are we doing planning, we build it, we automate it, we test it, we document it and we review it”
* (**P** *F* d): preparing marketing plans and preparing communications also often part of the sprint
* (**P** *F* d): “it’s really important that we do [stand up] every day, because that’s holding each other accountable to the commitments that we’ve made”
* (**P** *F* d): “we want to keep that backlog really clean, because there’s nothing as scary as an out of control list”
* (**P** *F* d): have a retrospective immediately after sprint is finished and product is demonstrated to stakeholders
* (**P** *F* d): “that means that throughout the entire lifecycle we’re constantly tweaking and tuning how we work together”
* (**A** g): “how do you ensure that you have a common language with your comms and your marketing people, and that they are up to speed with what you’re doing?”
* (**P** *F* d): “they will be with us the entire time…they will be included because their tasks will be a part of the delivery goals”
* (**F** g): “how do we make sure that what we’re doing…against our branch isn’t being replicated?”
* (**P** *F* d): ‘this co-design should be the product owner and the scrum master doing a really good job with that backlog review”
* (*F* g): “it would all be centrally managed in terms of the integration of the development of features by…The Alan Turing”

### Open

* (*F* d): “I’ve taken a fork off of the Alan Turing repository and we kind of have our own dedicated branch for this interface piece of work that we’re going to be involved with, but that’s also public”
* (R, *T* d): “the benefit of building it in an open source way is that if we aren’t able to do [a feature like translation] … another community might be able to, and we’d be able to facilitate that.”
* (*F* d): “given the fact that…the GitHub repository is open to anyone in the world who is interested in contributing to the project…in Fujitsu we are mobilised, with our talented developers, to tap into

00-project-documentation/community/focus-groups/04-october-2019.md METASEP
# Focus Group Data

## 04 October 2019

## Contents

1. [Value of project and motivations to take part](#1-value-of-project-and-motivations-to-take-part)
2. [Experiences of autistic people and their families in their daily lives](#2-experiences-of-autistic-people-and-their-families-in-their-daily-life)
3. [Platform design](#3-platform-design)
4. [Moderation](#4-moderation)
5. [Representing others](#5-representing-others)
6. [Data management](#6-data-management)
7. [Contribution channels](#7-contribution-channels)
8. [Ways of working](#8-ways-of-working)

## Key

#### Where From

* A = Autistica
* T = Turing
* F = Fujitsu

#### Specialist Role on Project

* R = Researcher

#### Connection to Autism

* *A* = Autistic
* *P* = Parent of someone autistic

#### Connection to Experience

* d = direct: experience, suggestion, or opinion of speaker
* i = indirect: witnessed or reported on behalf of someone else by speaker
* g = general comment

## 1. Value of project and motivations to take part

### a) General

* (R *T* g): “I think there are multiple different aspects of why people are interested”

### b) Helping autistic people and their families

* (**P** *F* d): “I want to do whatever I can to help [my son] and everyone else with autistic spectrum condition.”
* (**A** **P** *A* R d): “we’re not interested in autism, we’re interested in autistic people and their families, and ultimately how we can improve their lives, so this project is one of the most exciting examples of that”
* (R *T* d): “it’s hugely motivating, because I can see the value in it to actually have a huge impact on people’s daily lives”
* (**A** **P** d): “…make it easier for people to, I wouldn’t say function, I would say live…bring their talents out, uncover their potential”
* (*F* d): Impact
* (R *T* d): “…informing, hospitals, schools”
* (*F* d): influencing organisations and public bodies to try and adapt how institutions work with people
* (*F* d): adapt environments to help them be more comfortable
* (*F* d): “help people become more productive and…comfortable in the way they live and work, and in their daily lives.”
* (**P** g): “I think that unless changes and adaptations are made, we don’t know the full scale of what some people with autism are actually avoiding altogether, and never actually getting access to”

### c) Helping people more generally

* (*F* d): “…those issues do overlap with people who don’t have autism, and so where we can…tease out issues with environments it can only help…to improve everyone’s lives”
* (R *T* d): “[making] research broader and more efficient and more useful”
* (*F* d): “[It will] help make the world a better place I think ultimately for everybody”
* (R *T* d): “The way it’s being run is with mindfulness of inclusivity and empowerment and how do people’s voices get heard, and that to me is hugely vital, for science in general”
* (R *T* d): “I’m…interested in adjustments to the environment that…enable everyone”

### d) Attracting autistic people/harnessing their value

* (*F* g): “We’re on a journey at Fujitsu learning what it is to embrace neurodiversity…we’ve got to make ourselves more attractive to neurodiverse people, because the value they add to the organisation is absolutely massive”

### e) Allowing people to be heard

* (**A** d): “It gives people who may not usually have a voice a representation”
* (*F* d): “…giving a voice is amazing.”
* (**A** d): “I can’t think of anything that is dedicated solely to autistic-related research in terms of actually having a platform for that”

### f) Helping educate neurotypical people and remove stigma

* (**P** d): “I’m interested in helping to educate as much as anything, employers”
* (**A** **P** d): “I think that improving sensory environments is absolutely instrumental to removing stigma in society associated with this condition”
* (*F* d): “…to be able to share information and really understand what people feel themselves going through”
* (**A** **P** d): “awareness is really important – understanding”
* (R *T* d): “we can gather together common themes…but also the nuance of experience, and I think this will help people to make…more sensible adjustments, that aren’t just assuming everyone with autism has the same needs and wants”
* (*F* d): “I’ve suffered from mental health issues myself, and it’s certainly changed my perception for then understanding what people go through, and I think having this platform to be able to share that information and really understand what people feel themselves going through…I think is vital and will help make the world a better place, I think ultimately for everybody”

### g) Creating connections/community

* (**A** **P** *A* R d): “I believe that [Autistica has] a unique opportunity to facilitate partnerships, including the involvement of autistic people and family members”
* (R *T* d): “I’m really interested in…trying to find out ways of having people effectively collaborate with each other, so I’m really interested in the discussions around that as well”

### h) Sharing expertise and personal perspective

* (**A** **P** d): “…to give perspective on autism as a parent and wife, and as a lawyer”
* (*F* d): “…understanding what it is about sensory perception, what it is about our environment we need to understand, or we need to adjust …really excited about this”
* (**A** **P** d): “…it’s not just expert advice, everyone is…coming from their life experience, from their relative’s experience, and they’re saying, ‘it helped someone, I’m sure it would help others’, so I think a project like this is important”

### i) Getting suggestions and recommendations

* (*F* i): “I think there was quite a strong preference…to get tips from the platform, i.e. helpful experiences in terms of how people could adjust the environment”

## 2. Experiences of autistic people and their families in their daily life

### a) General

* (**A** **P** g): “…certain environments are off limits to many people with autism because of the sensory implications”
* (**A** **P** g): “…a lot of the sensory stuff [affects people in the same ways], noise…flashing lights”

### b) Shops

* (**A** **P** d): “Boots, is re-doing a lot of its big stores, and the whole ground floor is now a perfumery…I’m sensitive to perfume, so I’m gonna avoid Boots now”
* (**P** d): “a lot of big stores the minute you walk through the door you’re bombarded with perfume and things…they make my headaches worse”

### c) Hospitals

* (**P** i): “…my son had to have a dental operation last year…it was a dreadful experience…the anaesthetist didn’t understand, the staff didn’t understand. He was put in a room with lots of screaming children in the recovery.
It culminated in him biting through his tongue, biting through his lip. His sensory overload was huge”

### d) Employment

* (**P** i): took son 2 years to get a job after he graduated, even though he’s brilliant and reliable, because he doesn’t talk enough for interviews, “I think a lot of the time employers have no idea how to approach interviews with people on the spectrum”

### e) Education

* (**P** i): “once [my son] went to university he struggled because we didn’t realise it was the autism, because he also has a disability related to autism, a physical one that also often comes with autism”
* (**P** i): “the second son with autism struggles a great deal. He’s at university, and it became apparent how challenging that was for him”
* (**P** g): “…it’s just so noisy in a tiny classroom”
* (**P** i): asked for someone to accompany son between classes, “because a small person amongst a thousand odd very tall people, can be quite overwhelming…he had a few meltdowns, and he was sort of hitting out…it wasn’t hitting anybody in particular, it was just – panic”
* (**P** i): “teachers don’t seem to have any knowledge or awareness of the needs of people on the spectrum”
* (**A** **P** i): [son was] “…put in a party house this year on campus, and he’d asked for a fridge in his room because he cannot go in the kitchen when other people are around…he wrote and said, ‘Where’s my fridge? I’ve got to store food away in there’…Disability services, who should be aware, wrote back, “…until we find a fridge, please do it”
* (**A** d): “I got too much support…they just gave me…a teaching assistant for every single classroom…I felt like I really didn’t need it, because it actually just distracted me from work”
* (**A** **P** d): “it took me several years to convince his [autistic son’s] school to serve plain pasta, so he doesn’t have to explain every time that he has an eating disorder”
* (**A** **P** i): dealing with students with autism and other disabilities is a lot of work, “I am fully aware, because I have autism and I have children who struggle, I do the extra hours.
No other staff member does, and it affects me therefore, because I kind of take on responsibility for all the students”

### f) Communication

* (**P** i): “My son can’t read, write, or speak”
* (**A** **p** i): “[My son] finds it difficult to talk in a lot of situations like going to the doctors for example, so I have to go with him”
* (**P** i): “my son can’t… verbalise how [he] feels…whenever you ask him how he is even if he’s got a streaming cold, he always says, ‘I’m fine’”
* (**P** i): “…he struggles to talk – he normally texts me or write notes”
* (**A** **P** *A* R d): “I guess it’s a bit like building blocks…maybe if that person didn’t have elevated anxiety levels because of the sensory environment they might be able to communicate a certain level of need, but then if you put them together [it becomes challenging]”

### g) Misunderstanding and Stigma

* (R *T* i): “…something that has come up a few times is this expectation that if someone is having difficulty…the problem is they’re being difficult or awkward, when…often it’s the environments that we create and the ways that we interact that’s the problem, and I think that’s a really useful thing that hopefully this [project] can help address”
* (R *T* i): “this seems…a big theme: people making assumptions, instead of listening”
* (**A** **p** i): “…people mean well everywhere, they want to do the right thing, but the problem is that, quite often, they don’t have a standard, because they don’t have expert guidance”

### h) Travel

* (**A** **p** d): “I think transport is one of the hardest”

### i) Adaptations and solutions: experiences and suggestions

* (**A** **p** g): “when you integrate sensory adjustments into the environment…you make people’s lives easier, and they can keep certain sensitive information about their condition to themselves, and it empowers them in a big way”
* (**A** **p** d): “…if you just put it into a standard…[it] loses all the richness”

### j) Listening to individual needs and offering choice

* (**A** **p** g): “sensory inclusiveness, so you offer choice, without forcing the person to explain, and this is so easy, and at the same time it’s of enormous benefit to people, because they don’t have to disclose their condition, they are given the choice anyway”
* (**A** d): “’I know what I want, I know what I need, can you do this for me, yes or no?’ And then it…speeds up”
* (**A** d): “just having the flexibility I think’s one of the most important things”
* (**A** d): “you should be the one to approach [disability services] rather than vice versa”
* (**A** **p** i): “There’ll be many young people that wouldn’t approach disability services, and not realise that they have to”

### k) Having an “autism hour, or ‘quiet hour’ in busy public spaces

* (**A** i): “…there’s some online backlash…people are saying ‘this isn’t enough’, ‘Why can’t it be like this all the time?’, ‘Why does it have to be background music?’”
* (**A** **p** i): “there’s specific times that might not be convenient, people have different sleeping patterns and everything, and my son wouldn’t go to them”
* (**A** d): Would be good to have some quiet times “…at my local library…they have mum and baby groups there, it’s kind of like the main community hub of my town area”
* (**A** *A* d): “so the idea of a noisy library is fantastic for me, I would love that… [important to let] people document the different types of experience that they need”

### l) Adaptations in schools/universities

* (**A** **p** d): let people come in either half an hour early or half an hour later
* (**A** **p** d): everybody used to signing for the register, “so there wasn’t that tumultuous start to the day”
* (**A** **p** i): “we made loads of different adaptions, and it really worked – for all the children… I think to be honest we saw that the concentration levels of all the children improved, with just those adaptions in place”
* (**A** d): “they could install sound fields to improve auditory processing for some children”

### m) Network or community of volunteers

* (**A** d): “we went to Germany recently, to look at some programmes they were doing to educate people about the holocaust and Nazis and fascism, and there was one…voluntary group…going to schools and training the school children in awareness, so it could be [done] with this data”

### n) Education

* (**P** i): “…they [son’s university] were just so helpful, and he stayed in halls the whole time, because he couldn’t cope with a party house”
* (**A** d): “the support services [at university] are actually pretty decent”

### o) Hospitals

* (**P** i): Experience of autistic son’s dental operation:
•	best interests meeting beforehand
•	learning disability nurse [to] pass information on
•	lights all dimmed
•	autistic son only one in the recovery room
•	autistic son given a pre-med
•	things being explained clearly/factually: “the anaesthetist understanding not to talk to him like a baby”
•	allowing him to lie on the bed and then have the same bed wheeled in
•	“this was the same operation, but with a few moderations – no trauma, nothing - and it was a great experience”
* (**P** d): “I recently had a knee operation…I was told every step of the way exactly what was going to happen, but if I wasn’t…it’s quite overwhelming even for a neurotypical person…”
* (**A** *A* d): [Being treated for a broken foot]: “I was very impressed…they knew I was autistic and they did give me support”

## 3. Platform Design

### a) General

* (R *T* d): “make the user interface as broadly accessible as possible”
* (**A** d): “having…one place where you can find everything…and the potential to have that expand, I think is really helpful.”
* (**A** d): privatise where your location is for the public site and research, but use information for individual to get location specific pop-ups

### b) Non-verbal means of inputting information

* (**A** d): “…having the option to…upload photos, or pictures, or voice recordings of people.”
* (**P** g): “A lot of people do communicate quite visually, or understand things visually, so that would be useful, if people could have pictures”
* (**A** **p** d): “communication with pictures, voice to text interface” to improve accessibility

### c) Filters for different kinds of user

* (**A** d): “that would be good…if you’re an autistic person who wants someone to relate to…you can always filter it through to see personal perspectives, whilst…parents might be looking for a different thing”
* (R *T* d): “[maybe there is an] opportunity in this for autistic people and parents to empathise with each other through sharing experience…if you segregated the responses, it would prevent that from happening”
* (**P** d): “you wouldn’t have to segregate them… you could just… have a drop box where people choose whether they’re parents, people with autism, teachers, employers…”

### d) How should we ask the research question?

* (**A** d): “…[make] sure the question’s not broad”
* (**A** d): “…remind all people that this isn’t the experience of all of us, it’s just the experience of a good handful of us”
* (R *T* d): “we’ll probably ask people to share a lot, and then it’s on the researcher, to…tease out the sensory processing aspect”
* (R *T* i): “I think the only thing that I’m slightly worried about is if people feel that the experience that they’re sharing that is not related to the sensory processing doesn’t get the same level of attention, in the published research… [solution is]…setting expectations”
* (**A** **P** d): “I think that when we collect several experiences for one particular environment, [researchers] can actually analyse that environment, without [participants] actually going into sensory analysis”

## 4. Moderation

### a) General

* (R *T* d): “[moderation] is purposefully a lot of work, in order to maintain a safe and inclusive space”

### b) Delayed response

* (*F* d): “[how] important is the immediacy of that information? Because, if everything is going to go through the moderation process, then maybe the salience of…advice is lost.”
[potential solution multiple input channels, select for immediate response, free text otherwise]
* (R *T* d): there are other platforms, such as social media, for immediate responses
* (R *T* d): “I think we are going to have to do a due diligence of at least at the beginning, reading everything that’s going to be made public to make sure it’s not…insulting…or identifying…so there probably is going to have to be a time gap”
* (**A** **P** i): “…it’s a very high standard to review everything, and give them advice, and do all of that, it might become unworkable”

### c) Who should moderate?

* (R *T* d): “…one thing that we’ll almost certainly do is have a diverse group of people moderating those public posts, so I think there’s a little bit of a safeguard”

### d) Communication

* (R *T* d): “an option is for the moderating team…to send a message back to the person that uploaded it to say, ‘these are the things that we’re concerned about, it doesn’t violate our code of conduct… we just wanted to check in with you… have you thought through this, this, and this”
* (**A** **P** d): “…having you bounce it back and say, ‘have you thought about that’, would make me think, ‘Oh god, I’ve done it again, I’m really bad, I just can’t behave normally’”
* (R *T* d): “that’s so important that whatever we design doesn’t make people feel like they’re doing something wrong by expressing themselves in that way”

### e) Community Response

* (**A** **P** g): “when you talk about moderation and basically exclude certain facts, you know, there could be a backlash from your community saying they’ve been misrepresented, because you’ve excluded certain facts”

### f) (**P** d): Link to Facebook page where unmoderated messages could be posted

* (** P** *F* d): “being directed to social media then loses the anonymity we’ve got on the platform, because if people then went on to post something about it on Facebook or on Twitter, then you’re identifiable”

### g) What should we moderate for?

* (**A** *A* d): being identifiable through multiple posts
* (**A** d): Legal problems if organisations or companies are named
* (**P** d): Accidentally including incriminating information
* (R *T* d): “…probably the moderators would just say, ‘no, we’re going to accept it, we’re going to keep it for research purposes, but we’re not going to make it public’”
* (**P** i): sharing inappropriate (or socially awkward) information
* (**A** **P** g): people who know the individual being able to identify them
* (**A** **P** d): “supposing…my husband goes on and…works out that it must be me… there’s still implications there”
* (R *T* d): “there’s that whole dimension of other people that you might know personally, reading your stories.”
* (R *T* d): “I do think that probably the moderation process is almost certainly going to moderate out of the public one, but keep in for research if it’s consented, anything that talks about anyone else in a way that it could be identified”
* (**A** **P** d): “I think a moderator to look at things that don’t have consent in particular, and who probably should be someone autistic, and who could remove any of those things that could do damage”

### h) What would help?

* (**A** d): “if you were concerned about the welfare of someone… a section if you need advice or if you need help”

### i) Allowing people to comment

* (R *T* d): “I think there’s almost no chance that we’ll allow people to comment on posts
* (**A** g): “That could give people a lot of anxiety”

## 5. Representing others

### a) General

* (R *T* d): “we want to make the data set as broad as possible and make the process as inclusive as possible, and certainly not exclude anyone because they have challenges, and on the other hand we take consent and agency really seriously, and we think everyone should have a right to express themselves in a way that they want - so these are the two sides of the coin.”

### b) Important to give everyone a voice

* (**P** d): “I am his voice, so I’m trying to represent young people like him, because the spectrum is large isn’t it?”
* (**P** d): “I feel quite strongly that we should be able to share a story, because…my son’s non-verbal, so his behaviour displays a lot of how he feels, and as his Mum I feel I understand him pretty well, and I would hate for people’s voices not to be heard because they can’t express it”
* (**P** i): “…even if [some autistic people] are eloquent with people they know well, they may want someone else to speak on their behalf on the platform, if they can’t do it themselves as well”
* (**P** i): “my son can’t consent, I know how hard he struggles to communicate…and I do feel that he would want to be included”
* (**P** d): “unless we do include people who are non-verbal or not or minimally verbal, they’re going to continue to be a neglected group.”
* (R *T* d): “…although it is not the easiest thing in the world to give consent to tell stories about other people, I think it’s really important that we try…to come up with a process for what that looks like, and we will brainstorm that, and we’ll iterate it a few times over”

### c) Concerns and complexities

* (**A** d): Would be good to have some quiet times “…at my local library…they have mum and baby groups there, it’s kind of like the main community hub of my town area.
* (**A** *A* d): “so the idea of a noisy library is fantastic for me, I would love that… [important to let] people document the different types of experience that they need”

### d) Distortion

* (**A** d): “…there could be people who maybe exaggerate or post stories about other people”
* (**A** d): “there’s always gonna be a personal bias in this because it’s coming from one perspective”
* (**A** **P** d): “…distortions are very important, because we want raw data…it needs to be given even to non-verbal people to deliver feedback through pictures, through other ways…the more opportunities [for] people to express them[selves] directly the better.
We want…as unbiased, authentic information as possible”
* (**A** **P** d): “…you have secondary source and that’s a distortion”

### e) Consent

* (**P** d): “my son doesn’t talk, but would, can consent”
* (R *T* d): “…it’s not just whether someone can be identified, and there’s a legal requirement, but also an ethical question, is this the right thing to do?”
* (**A** **P** d): “…the problem is that when you tick that box was the consent informed, or did the person just say ‘yes’?”

### f) Who could be trusted to represent somebody else?

* (**A** d): “depends how close they [the person doing the reporting] are…as long as it’s…a close parent, or guardian, or sibling, someone…the person themselves could trust.”
* (**P** d): “I’ve got lots of experiences from my work, I wouldn’t be comfortable sharing those, because they’re not my children, so I would only share the experience of my child”
* (**P** d): “…make it very careful in terms of who got to share whose experiences [e.g. parents] …not just general”
* (**P** d): “I wouldn’t feel comfortable sharing experiences even if I anonymised about someone else’s child”
* (**A** **P** R *A* d): “…there is now a group of older autistic adults, who you know, may not be in a position for their parents to be able to report for them”
* (**A** **P** d): someone with credentials, such as a Welfare Deputy Officer.

### g) Community Response

* (**P** d): “it’s political, you need to think about your audience and feedback…from people, backlashes, because  the autistic community can get quite nasty, and apologies to anyone here but… there are particular people that think that parents do not have a right to say anything about their children, and they get really nasty on twitter about it”
* (**A** **P** R *A* d): “…in terms of people who might have concerns from the autistic community… show that we’ve taken steps to make sure that this is accessible as possible…there are limitations to the research approach – there are limitations to self-reporting, because we don’t understand ourselves very well either…and we can’t let perfection be the enemy to the good here”

### h) Guidance for representing others

* (**P** d): “…take away the emotive from it…just record the factual side of it”
* (**P** d): “…cut out your own emotions and comments”

### i) Suggestions for processes

* (**A** d): Guidelines: “a set kind of guidelines – nothing too specific in case they sort of need to express themselves in a certain way - ‘I’ve read or understood the following agreements to posting’”
* (R *T* d): [have a] “process whereby we would give some guidance to say - this is how you would best share someone’s experience without distorting it, this is how you represent someone well…”
* (**P** d): Authentication process: “if you’re a parent or a sibling or a close relative, you could even have another person countersign to say…they believe that to be the truth as well”
* (**A** d): Caveating submissions: “maybe they would have to state, ‘I am somebody’s mother, and this is how I feel, this is what I feel’…obviously if you can’t consent or offer information then it’s clear that it’s actually what you feel as much as you know that child”
* (**A** **P** R *A* d): Hybrid: “…give some information…supported by someone else to explain some of the context”

## 6. Data Management

### a) General

* (R *T* d): FAIR principles for data use: findable, accessible, interoperable, and reusable

### b) Agency

* (R *T* d): “we’ll almost certainly have three options, one that says you can use it and no-one else can, one that says if this…governance panel, thinks that it’s a reasonable application from a project that’s value aligned, then I’m opting in… the third option, that will be, “I want to be contacted on every individual basis’”
* (R *T* d): “[a] goal of the project is to allow people to understand a little bit more about the agency over their data”

### c) Anonymity

* (R *T* d): “we imagine that…it will be anonymous and we’ll take out any identifying data”
* (**A** **P** d): “if someone records for someone [else] the way…around it is anonymisation… removing any personal identifiers”

### d) Informed consent

* (R *T* d): “I think we’ll have to put quite a lot in place to trust that the individual person who was entering information has read the consent form, has checked through those boxes, I think there’s quite a lot of design around making that extremely clear”
* (**A** d): [example of a good terms of conditions]: “…a fake box where if you ticked it would then stay on the page for ten minutes and you would have to read it”
* (**P** i): “some autistic people can be a little naïve, and sort of overshare things”
* (**P** g): “…by sharing information, if prospective employers look at it, that could affect [autistic people’s] prospects”
* (**A** *A* g): “I think probably quite a lot of the community would be keen to repost”
* (**A** *A* d): “I slightly worry I suppose if it’s an individual profile that is posting a lot in a particular area, does that make it kind of identifiable?””
* (R *T* d): “…you would absolutely be allowed to have a profile that would include no photo, no name, just a made-up name associated with the account, you wouldn’t need to make any of that information public.”
* (**A** **P** d): “[if the question is too general], we’ll lose sight of the sensory aspects, it’s sensory, let’s keep it to sensory”

### e) Communicating consent

* (R *T* d): “the really important thing… [about consent] is the clarity and the purpose…and communicating what it means in a way that is not a massive, massive block of text that’s really overwhelming”
* (**A** **P** d): “…as a data controller, you actually have to be very clear about your purpose in collecting the information”
* (**P** d): make sure the consent form is not too long
* (**P** d): put the consent form in fairly simple language

### f) Changing consent

* (R *T* d): “I think [the ability to withdraw data] is a huge feature around…the ethics of the data management.”

### g) Design

* (**A** **P** d): “…the whole of your platform should be designed to protect privacy”
* (**A** **P** d): “you need to collect just enough according to your purpose”

### h) Which groups or organisations should learn from the data?

* (**P** d): shops
* (**A** **P** d): schools
* (**A** d): the NHS
* (**A** d): GP surgeries, waiting areas, hospitals
* (**A** **P** i): “for my son, in particular trying to go along to the doctors or a hospital appointment is an absolute nightmare”
* (**A** **P** R *A* g): “NHS England, in their 10 year plan, have named autism and other disabilities one of 4 clinical priorities…I think there is an opportunity here to actually do something that does make a difference in GP services and hospitals, because at the moment politically, they’re listening”
* (**A** **P** d): architects and designers
* (**A** **P** d): “…you need someone like that involved who can pull all the data together and get it to be used”
* (**A**, d): “possibly even autistic, or people who closely associate with autism, architects and designers…who has…interior insight”
* (**A** d): airports and train stations
* (R *T* d): libraries

## 7. Contribution channels

### a) General

*  (*F* d): there should be multiple input channels
* (R *T* d): “hopefully people who aren’t able to come to the focus groups, are not only heard by [researchers], but actually incorporated into a body of evidence and data that can be used by other people for the purposes of understanding a little better what the priorities are from the autistic community.”
* (**A** d): “if there’s a decision-making process. which you need a quick answer to, maybe a Twitter poll”

### b) Focus Groups

* (**A** d): “…being part of this kind of focus group…gives people who may not usually have a voice a representation”
* (R *T* d): helpful to have thoughts written down
* (R *T* d): “…one of the interesting things about the focus groups is that you lead the discussion by the question that you ask and the direction that you take”

### c) Personal Email

* (R *T* d): “we just can’t use it for research, but if you’re confused about any of the other ways of joining in, you can just email me, and I will help you with whatever you need help with.”

### d) Mailbox

* (**A** **P** d): this would be the easiest way of sharing the project and getting people to join in

### e) Google Forms Survey

* (**A** d): how can we be sure what’s put in there is authentic
* (**P** g): it would be useful to have pictures for those who contribute visually
* (R *T* d): allows people to contribute who can’t be here in real life
* (R *T* d): it is always open, you can contribute at any time
* (R *T* d): “we’ve received, like quite a lot of feedback in the past month that it’s really confusing”

### f) GitHub

* (R *T* d): “…you can also take part. via. GitHub, which is where you can just come and publicly and in an identifiable way you can put your priorities and your goals and the next steps of the project in there”

## 8. Ways of working

### a) Diversity and Inclusion

* (**A** d): place where volunteered, “had a programme involv[ing] facilitations, and chats…we’d have a special guest who might be a psychologist, or a professor, or sometimes a doctor, and it would all be kind…topics to do with relevant issue,…finance, bullying, home issues, social issues…having an equivalent on the forum could…attract different groups.”
* (R *T* d): “if you do not have fair equity, diversity, and inclusion processes, then the people who drive the research and who choose what is going to be done with the money for the research is a very, very biased group”
* (R *T* g): Who might not be able to take part and possible solutions?
* (**P** d): people who are blind
* (**A** **P** d): assistive technology could help
* (R *T* d): make sure that the text that you use and where you lay things out on the page can be read by a screen reader.
(F, d): integrating more with virtual assistants like Alexa or Siri
* (**P** i): “…my mum couldn’t use the internet or whatever, but she used her Alexa, it was her best friend in the end”
* (**P** i): elderly people with autism, that aren’t as tech savvy
		* (**P** d): leaflets in libraries and surgeries
* (R *T* d): “those are good ideas about how you would communicate the project, but not collect their experiences without them going online”
* (R *T* d): library sessions where people with trained mentors who could help them join in
* (**A** **P** i): they might be tech savvy, but they might not have access
* (**A** **P** g): “recent reports show that elderly people and children don’t use the internet not only because they don’t know how, but also because they are concerned there will be some scam”
* (**A** **P** d): people from lower socio-economic groups
* (R *T* d): technological upskilling could offer compensation for time/motive to join project
* (*F* d): people who are not Western and European
* (R *T* i): came up in previous focus groups that maybe the platform itself should be available in other languages
* (R *T* d): “I’m happy to be led by the community… [but] we’re already doing so much that starting to go into other languages is really tough”
(F, d): not just the language aspect, also the lived experience
* (R *T* d): “we can say that it’s a global platform, because it’s on the web, but if it’s not really accessible to every member of the globe, then we shouldn’t be calling it a global platform”
* (R *T* d): realistically, we will be using Autistica’s Discover Network, of around 5,000 people who are all UK based, initially
* (R *T* d): “don’t try to get lots of kudos by showing off to an international audience…if it’s really only accessible for English-speaking countries”
(P, A, d): “…for the lived experience, and also…from a research perspective, comparing different countries…would be a great project”
* (**P** d): People from different regions
* (**P** i): “…people living in London will have totally different experiences to people in Dorset, or in a farming district”

### b) Online reimbursement

* (**A** **P** d): “…in some ways it might be slightly discriminatory to people who can’t work because …they’re finding it quite hard to live anyway”
* (R *T* d): “I think that it’s a really important problem, that we don’t pay people, and I don’t have good solutions for how to fix it”
* (R *T* g): “…given how much of a general problem it is for autistic people, that there is so much discrimination in the workplace…that there’s this huge institutional bias often… reimbursement is something to think super carefully about”
* (R *T* d): “I think it’s bad for research to only hear from the people who have time, and space, and…the finances to be able to take part.”
* (R *T* d): Open Source] is great if you are in a privileged position such that you can give away everything for free and you can give away your time for free, but the status quo is… problematic”
* (**A** g): “if it’s free people might sort of click through it rather than actually reading through the questions… if they know they’re not being paid for their time”
* (R *T* d): the reason why we don’t pay people is because it’s pretty difficult to do, and the main, the main difficulty is…related to this holding personal information…your bank account details are really important”
* (R *T* d): “I hope that there will be [user testing available over] Skype or some sort of video conferencing, and those will be paid”
*  (*F* d): basic attention token as means of reimbursement
*  (*F* d): “based on your attention on the page, it’ll be able to reward you with a particular crypto-currency - you put cryptocurrency for research [in a pot], and then people…draw from the pot as a reward for their attention to that page”
* (R *T* d): I’ve actually got a lot of dislike for cryptocurrency for a lot of different reasons
* (**A** d): Amazon vouchers
* (**P** d): “I…do quite a few different things, where they may monitor my phone or what I’m listening to on the radio and then they pay me in Amazon vouchers”
* (R *T* d): “I think it’s a really good point actually, because all you would need is an email address for the project itself we’re going to have an email address”
* (**A** **P** d): prize draw
(R *T* d): “I think that’s wildly unethical… I think it’s much more honest to say, look, we’re not going to pay you for your time to fill in this questionnaire, and this is how long it’s going to take, and you can make that decision”
* (**A** **P** d): choice of charities for people to donate to
* (**A** **P** d): “I think that’s still discriminatory…if you’re struggling to make ends meet”
* (**A** **P** d): “[Rationale that] you’re over-budget, and these people are so motivated to do it that they’ll do it anyway…that’s unethical”
* (R *T* g): “I do think there may be a group of people for whom that is motivating…I don’t think that solves the problem of exclusion of people who don’t have the financial means, but I do think it’s interesting”
* (R *T* d): offer a way for people to get in touch and say if they need to be reimbursed
* (**A** **P** d): “it’s sort of like an honesty book”
* (**A** **P** d): take the platform to a place such as the NHS where it would be accessible to people, so they don’t have to access it themselves through the internet
* (R *T* d): “I think it’s definitely wrong that you would pay people by the amount of time they spend on the page, and I don’t know how you would quantify an appropriate amount of time for somebody to have spent, I don’t know, years of their life thinking about this, vs…slinging down a couple of comments for five minutes”

### c) Openness and Transparency

* (R *T* d): “…all research should be as open as possible, and as closed as necessary”
* (**A** g): “[make] sure the guidelines are short, sharp, get straight to the point, maybe language type…because some people on the spectrum may be confused by certain terminology such as metaphors and simile”
* (**A** **A** d): community trust: “I think from a community trust point of view, it’s really good to be transparent about why you want the data, but also why you don’t want the data”
* (R *T* d): “one of the things that a lot of people thought that we might do with the data was sell it, and that’s definitely not what we’re planning to do with the data, but I think it is useful to be really explicit and upfront about the reasons and motivations, and limits of what we would do”
* (**A** d): keeping people informed
* (**A** d): constant updates
* (**A** d): keeping people informed when there are collaborations with other organisations
* (R *T* d): “we definitely will do blog posts, videos, online discussions”
* (*F* d): cartoon and drawings perhaps explaining the concept of the back end and the application, “something that explains it in layman’s terms might be useful”
* (**A** **P** d): communicating project
* (R *T* g): large scale communication will be further down the line: “I think we need to be clearer about what the project is before we communicate it to lots and lots of people”
* (R *T* g): participants invited to share survey and sign people they know up to the mailing list, but not big public launch until pathways clearer
* (R *T* g): “there’s a lot of stuff that we need to action and make more accessible first”
* (R *T* g): no large social media or flier campaign until there is more clarification
* (R *T* d): promotes reproducibility: “…the key thing for me that really motivates me around reproducibility is that a) Reinhart and Rogoff did not intend to mislead, they didn’t mean to make a mistake, so they had no way of going back and checking…and, it’s very, very rare in academia at the moment and the way that we do scientific research, that anybody checks”
* (R *T* d): it can get be really hard to, “access…data and figure out what had gone wrong”
* (R *T* d): “most of the reasons why things aren’t reproducible are the human elements of them”
* (R *T* d): “why would somebody share their data, or share their code, that accompanied their research, because someone might find that they’d made a mistake, and it is definitely the case that it is the correct thing to do to have people find those mistakes”
* (R *T* d): “you should be able to get generalisable evidence, before you should be allowed to, for example, make government level or individual person-level decisions about them”
* (R *T* d): …I think it is unethical to collect really, really valuable datasets and not make them available for future use or potentially for reproducible aspects
* (R *T* d): having access to data is really important, and having access to the processes and to the things that have been done to that data or with that data are also really important
* (R *T* d): all research should be as open as possible, and as closed as necessary
*  (*F* d): “I’m a big advocate for open source, I think it’s absolutely amazing for verifying the code base to make sure it’s secure”
*  (*F* g): “you may have people who take the branch maliciously and adapt the project maliciously to gain information in a malicious way”
* (R *T* g): “I don’t know why people would…I think the risk is reasonably low”
* (**A** **P** d): “you wouldn’t have access to the source code, but because it’s open source, people can copy it”
* (R *T* d): “…the information needed to authenticate the database itself is private, so there’s a whole bunch of…private security stuff that happens in the background.”
* (**A** **P** d): “…as soon as it’s on the internet, anyone could copy any of it…not legally, but they could”
* (R *T* d): although you can’t stop people from copying public information from the website, you definitely can stop academic researchers from publishing it”
* (R *T* d): “I do a lot of work around open source development, and these are three principles that I try and work through – that every aspect of the project should be accessible and clear, it should be easy to understand; that the work should be easy to adapt, reproduce and spread, so it’s designed from the beginning to be shareable, and that is important to relate to the sort of responsibility you have for keeping personal data private, and that there is a participatory and inclusive aspect”

00-project-documentation/communication/reports/README.md METASEP
# Reports

This folder contains reports done about the AutSPACEs project, including:

- academic reports,
- older sprint reports,
- Turing updates

00-project-documentation/communication/presentations/README.md METASEP
## Presentations

#### This file contains links to slides for presentations given on the Turing/Autistica Citizen Science Project. 

* 24-01-2023: "AutSPACEs: co-creating a citizen science platform", delivered by Bastian Greshake Tzovaras, Georga Aitkenhead, Otis Smith and Helen Duncan for an international seminar on "Public Space, Play and Neurodiversity". Slides on [Zenodo](https://zenodo.org/record/7550764) 
* 28-10-2022: The Turing Way Fireside chat: Bastian and Georgia spoke to other amazing citizen sciientsts and practioners from MammalWeb and NASA. Recording available on [YouTube](https://www.youtube.com/watch?v=DaPydydUcOc&list=PLBxcQEfGu3DmBcSmt9GVfo4wN1KP1y2yl&index=10).
* 26-09-2022: "Participatory Science & Co-Creation: AutSPACEs' approach to participatory research", presented by Georgia Aitkenhead and Sophia Batchelor for an AIM RSF Cross-Consortia Knowledge Share Session. Slides available on [Zenodo](https://zenodo.org/record/7113771). 
* 23-03-2022: "AutSPACEs: co-creating a citizen science platform", presentation delivered by Georgia Aitkenhead and James Scott to the UK Centre for Data Ethics anad Innovation. Slides available on [Zenodo](https://zenodo.org/record/6411932)
* 07-03-2022: 'Citizen Science with AutSPACEs': workshop delivered by Georgia Aitkenhead, Sophia Batchelor, James Scott and Susanna Fantoni for the [2022 Mozilla Festival](https://www.mozillafestival.org/en/#/). Slides available on [Zenodo](https://zenodo.org/record/6337903).
* 24-11-2021: Contextualising research": workshop delivered by Malvika Sharan and Georgia Aitkenhead for the participatory science special interest group at The Alan Turing Insitute. Slides and worksheet available on [Google Docs](https://drive.google.com/drive/folders/1YtMQLcM7CIKZJQyKFG5vpdHTUT1RNdjW)
* 28-10-2021: "Participatory + Citizen + Open Science: a combined method" delivered by Georgia Aitkenhead for the Whitaker Lab at The Alan Turing Institute. Slides on [Zenodo](https://zenodo.org/record/5615381)
* 23-09-2021: "AutSPACEs: Open Citizen Science in Action" delivered by Georgia Aitkenhead, Lotty Coupat, Anoushka Ramesh, Sowmya Rajan an Susanna Fantoni for the 2021 Global CC Summit. Slides on [Zenodo](https://zenodo.org/record/5524890) 
* 08-07-2021: "AutSPACEs: Platform Updates", a presentation delivered by Sowmya Rajan to community memebers of the Autistica/Turing Citizen Science Co-Working meet-up to provide an overview of the working of basic MVP and other platform development updates. Slides on [Zenodo](https://zenodo.org/record/5094650)
* 10-06-2021: "AutSPACEs: Annual Updates", a presentation delivered by Georgia Aitkenhead to members of Autistica to showcase highlights from work completed over the course of 2020-2021. Slides on [Zenodo](https://zenodo.org/record/4922526)
* 31-03-2021: “Participatory Citizen Science”, a talk delivered by Georgia Aitkenhead, Suzanne Iwai, Sarah Markham and Otis Smith for the third cohort of OLS, using AutSPACEs as a case study for participatory citizen science. Slides on [Zenodo](https://zenodo.org/record/4651431). Recording on [Youtube](https://www.youtube.com/watch?v=Vizk7fni5Eo).
* 17-12-2020: “Autspaces: creating a participatory, open citizen science platform.” Presentation given by Georgia Aitkenhead and James Scott for the graduation of OLS-2, 2020. Presentation on [YouTube](https://www.youtube.com/watch?v=wv8_0iOMpGs).
* 18-11-2020: “Research to Empower: co-creating a citizen science platform” was presented by Georgia Aitkenhead and Otis Smith for an Autistica webinar on: “How can we move towards a more autism friendly world”. Recording available on [Youtube](https://www.youtube.com/watch?v=QDWpykMPxQ8). 
* 02-11-2020: “Participatory citizen science to improve autistic people’s lives”. Presentation given by Kirstie Whitaker for the February Urban Analytics Meeting at The Alan Turing Institute. Slides on [Zenodo](https://zenodo.org/record/3661469).
* 09-09-2020: The project was presented to the Open Humans community during a community call by Georgia Aitkenhead and Katharina Kloppenborg. Call recording on [YouTube](https://www.youtube.com/watch?v=YeVML0j8XoE).
* 08-07-2020: “Research to empower: co-creating a citizen science platform", delivered for the Autistica Research Festival 2020 by Dr. Kirstie Whitaker, Georgia Aitkenhead, Craig Hall, Thomas Stanley, Chris Legg, Otis Smith and Lucinda Marsden. Slides on [Zenodo](https://zenodo.org/record/3935849#.XxV_5fLTXyg). Presentation recording on [Youtube](https://www.youtube.com/watch?v=6UhMZJHULwA). 
* 06-07-2020: “Participatory science to improve autistic people’s lives”, delivered by Kirstie Whitaker. Talk given internally to Fujitsu on working together to build a participatory, citizen science platform. Slides on [Zenodo](https://zenodo.org/record/3931533).
* 25-06-2020: Project presented by researcher Georgia Aitkenhead as part of a panel hosted by Kirstie Whitaker on the Turing’s Tools Practices and Systems programme. Slides on [Zenodo](https://zenodo.org/record/3886558). Recording on Youtube.
* 09-06-2020: “”Research to empower: co-creating a citizen science platform”, delivered by Georgia Aitkenhead as part of a panel discussion hosted by Kirstie Whitaker for the “Tools, Practices, and Systems” of CogX 2020. Slides on [Zenodo](https://zenodo.org/record/3885494).
* 30-04-2020: “Growth through community”, Georgia Aitkenhead and Otis Smith delivered a demonstration and exploration of community-building in the Autistica citizen science project. Slides on [Zenodo](https://zenodo.org/record/3865057). 
* 27-04-2020: “Participatory science to improve autistic people’s lives”, Kirstie Whitaker gave a talk at the Centre for Research and Interdisciplinarity. Slides on [Zenodo](https://zenodo.org/record/3766923#.XrvZnsbTXy).
* 30-01-2020: "Participatory science to empower", presented by Georgia Aitkenhead for the Mental Health and Data Science Special Interest Group at The Turing. Slides on [Zenodo](https://zenodo.org/record/3743441#.XozAYxfTXxs).
* 20-11-2019: "Participatoryscience to empower", presented by Georgia Aitkenhead for the Springer Nature SciData19 conference. Slides on [Zenodo](https://zenodo.org/record/3530454#.Xoc_PxfTXx4). 


 











00-project-documentation/communication/newsletters/newsletter-2023-02.md METASEP
# February 2023 Newsletter 

Hi everyone! Up in the Northern Hemisphere we are slowly moving towards spring and the days are starting to get longer. This month we have again some updates from AutSPACEs for all of you and would also love to invite you to the March meet-up:


| Date | Time | Location |
| -------- | -------- | -------- |
| Thursday 2nd March | 12:00-13:30 | Online via. Zoom: https://turing-uk.zoom.us/j/5232350717 |

Join us to discuss the moderation approach for the platform, potential demographics questions we should include in AutSPACEs and other community updates!


Email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involved or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us. 
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News

### Platform development

Helen, Callum & Bastian have been busy – making some more progress towards our first deployable prototype! The integration with Open Humans is now fully implemented, a basic moderation approach exists and there are just some last few bugs that need to be ironed out before we can share more updates.


### European Prize for Citizen Science

This year will be the first year in which the [**European Union Prize for Citizen Science**](https://ars.electronica.art/citizenscience/en/opencall/) will be awarded to recognize projects that advance knowledge through the empowerment of civil society! The award will be awarded annually by Ars Electronica on behalf of the European Commission and is open to all initiatives in the European Research Area. Beyond a grand prize there are also two awards for *Diversity & Collaboration* and *Digital Communities*, which both sound like a great fit for what AutSPACEs is doing!


## February Contributor Spotlight - Helen

Today we are spotlighting [Helen Duncan](https://github.com/helendduncan). Helen is a member of the research engineering group at The Alan Turing Institute and has been working on the technical development of the AutSPACEs over the last months!

### Tell us a little about yourself...
I've been a member of the Alan Turing Institute for just over one and a half years. Before that I was working in physics and chemistry departments in universities doing crystallography and writing programs to generate models of interesting materials. I spent a couple of years living in Edinburgh. It was the most wonderful city and I miss it. Even the hills!

### What are your favourite hobbies/things to do?
I have an interest in sewing. I have a lot patterns, loads of fabric, and tonnes of half-finished projects, but very few finished garments to show for it. I think that is quite standard for the hobby though.

### What have you been working on for the AutSPACEs project?
Callum and I have been working on the backend of the website - implementing some of the solutions provided by the community. Most recently I have added search functionality to the stories and have been trying to make sure that the way users' experiences are handled and displayed is consistent across all pages.

### Give your best tips and tricks for contributing:
I think one of the best things about working on such an open and wide-reaching project is the ability to see what other people are working on. So my top tip would be to have a look around, see who has contributed and what they have to say or what they have done.

Also document what you've done. It may make sense to you at the time but two months later it may not, and for other collaborators it is really useful to see the thought process or steps that were taken to achieve a goal.

## Get involved

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas. 
It is really important we hear the voices and perspective of all of our community members.

Last year, we identified the following areas where we need your help:

* Communication, Engagement and Promotion
* Platform development
* Accessibility and Inclusion
* Moderation

If you want to get stuck in ASAP and know how to use GitHub, you can visit our main repository: https://github.com/alan-turing-institute/AutSPACEs
If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and we welcome anyone to contribute and get involved. We also invite you to take part (or start up) discussions on GitHub. You can do this by going to the repository and clicking on the "discussion" tab, where you can share your views:

https://github.com/alan-turing-institute/AutSPACEs/discussions

If you're not too sure about GitHub but would like to know more, _The Turing Way Book_ has a whole section on how to get started for successful collaboration and involvement. 
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility!

### Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also welcome to email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) and we will support you to be involved or answer any questions you might have. 

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Sophia, and Bastian 

00-project-documentation/communication/newsletters/newsletter-2022-12.md METASEP
# December Newsletter 2022

Hi everyone! Seasons greetings! Hope you've been enjoying the snow (if you're UK-based) and it's not caused too many problems for you! It's been a while since our last newsletter because we were on pause while our new team started and while Kirstie was on maternity leave. We'll be starting up regular newsletters and meet-up sessions again in January 2023, and we've got lots we're excited to share with you and to show you. So we wanted to send you lots of festive good cheer before the winter break and invite you to our first meet-up session of 2023: 


| Date | Time | Location |
| -------- | -------- | -------- |
| Thursday 12th March | 13:00-14:00 | Online via. Zoom: https://turing-uk.zoom.us/j/92231923469?pwd=TXFCNFZISzJjajFoaUpIOG1MTURKdz09 |


Professor Jonathan Green will be visiting The Alan Turing Institute on the 12th January and will be joining us for the meet-up session on zoom. Jonathan has long-standing professonial and clinical expertise in autism and is currently working on a "phenomenology of autism" based on the lived experinces of people with autism.  

Email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involveed or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us. 
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News

With almost a year's worth of update's there's far too much to include in one newsletter, so here are some of the highlights: 

### New AutSPACEs team!

We're delghted to welcome fantastic new members to the AutSPACEs team. Community manager Sophia Batchelor and researcher Georgia Aitkenhead will be joined by two members of The Turing's Research Engineerng Group: Callum Mole and Helen Duncan. Callum and Helen will be working on platform development, helping to put all of your amazing ideas into action and making sure that we have a fully functional platform that is accessible and easy to use. We have also been joined by the wonderful Bastian Greshake Tzovaras who is the new project lead for AutSPACEs. You can find out more about Bastian in our contributor spotlight interview, below. 

We're all looking forward to sharing our work and passion with the AutSPACEs community and learning from you all! 

### Platform 

We have been in the process of implementing the amazing platform designs created by Sophia and Soledad, based on gathering and analysing commmunity feedback. The result is an inclusive design founded on the preferences and feedback of autistic AutSPACEs community members. Thanks especally to Otis and Sue for your thoughts and feedback on the design! 

You can see design work as well as steps taken to create the design in the platform design folder of our GitHub repository: https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/platform-designs/wireframes/platform-prototype-21-02-2022.md. We are working on the platform development via. issus and pull requests on GitHub: https://github.com/alan-turing-institute/AutSPACEs. 

We're excited to do some more user testing and keep improving the platform in 2023. 

### Moderation 

Susanna and James have continued to lead on the moderation strategies for the AutSPACEs platform, which is a hugely impressive feat! Enormous thanks to them for their skills, insights, and efforts. We now have a code of conduct, moderation guidelines, and guidelines for suppporting others to be heard. We have also developed a unique "traffic lights" system to address potentially triggering content while allowing for individual self-experession. These strategies and resources come from a series of challenging conversations on the topic of moderation which many of you were a part of. Many thanks to all of you who were involved in bringing to light the nuances of this complex issue. 

### Presentations

We've been working hard to advocate for open and participatory research practices and share our view of the importance of research by and for the people for whom there is most at stake. Here's a selection of some of the talks we've given: 

* The Turing Way Fireside chat: James, Bastian and Georgia spoke to citizen scientsts from MammalWeb and NASA. You can watch the recording on [YouTube](https://www.youtube.com/watch?v=DaPydydUcOc&list=PLBxcQEfGu3DmBcSmt9GVfo4wN1KP1y2yl&index=10).
* "Participatory Science & Co-Creation: AutSPACEs' approach to participatory research", presented by Georgia Aitkenhead and Sophia Batchelor for an AIM RSF Cross-Consortia Knowledge Share Session. Slides available on [Zenodo](https://zenodo.org/record/7113771).
* "AutSPACEs: co-creating a citizen science platform", presentation delivered by Georgia Aitkenhead and James Scott to the UK Centre for Data Ethics anad Innovation. Slides available on [Zenodo](https://zenodo.org/record/6411932)
* 'Citizen Science with AutSPACEs': workshop delivered by Georgia Aitkenhead, Sophia Batchelor, James Scott and Susanna Fantoni for the 2022 Mozilla Festival. Slides available on [Zenodo](https://zenodo.org/record/6337903).

## December Contributor Spotlight - Bastian Greshake Tzovaras

Today we are spotlighting Bastian Greshake Tzovaras who has just joined the Turing Institute as Senior Researcher for Participatory Citizen Science and who will support AutSPACEs moving forward.

### Tell us a little about yourself...
In a former life I used to be a biologist with a focus on bioinformatics and evolutionary biology (my PhD was on the genomes of lichens – those fascinating symbiotic organisms consisting of green algae and fungi). But I've always been interested in open science and citizen science and since finishing my PhD I've worked at that intersection to facilitate different citizen science efforts through open source software! 

Since 2017 I have worked at and with the [Open Humans Foundation](https://www.openhumans.org) on building digital infrastructures for the responsible and ethical collection and use of personal data. And before joining the Turing I was a group leader in Paris at Inserm (the French National Institutes of Health), where my group did research on how online platforms can be co-designed and used to facilitate grassroots citizen science projects. My citizen science work so far has mostly been in the space of health, covering topics including chronic fatigue syndrome, [transgender health](https://transbiome.org) and [COVID](https://quantifiedflu.org). 

### What are your favourite hobbies/things to do?
Even outside of work I'm interested in doing research, in particular *personal science* or *self-research*, that means visualising and analysing my own data to [learn about myself](https://tzovar.as/quantifiedself/). The other thing I got into quite deeply a hobby in recent years is oldschool analog photography. I develop the film I shoot myself at home and do traditional chemical wet-printing. In Paris I regularly converted the bathroom into a makeshift darkroom for that and I can't wait to do that again now in London!

### What have you been working on for the AutSPACEs project?
A little bit of everything really. I've been contributing to and following AutSPACEs since 2019 already and worked on a first prototype with Georgia back then! Beyond technical contributions I'm also helping in writing up research articles, project management, doing some community engagement and really whatever else needs someone to help out!

### Give your best tips and tricks for contributing:
I know myself that it can feel very overwhelming to be "the newcomer" to a group of people that have been working together or just knowing each other already for a while. But most open source projects like AutSPACEs – and really most social efforts that try to do something for the greater good – are always happy to see new faces and equally happy to help out people that have just joined and help getting them settled in. That's why my number tip for contributing to any project really is to just reach out to one or a few of the people that are already involved in a project you want to contribute to. Even in the best-documented projects the personal component is invaluable, as they can help you find your way – plus it can be a lot more fun working _with_ other people than just contributing alone. 


## Get involved

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas. 
It is really important we hear the voices and perspective of all of our community members.

Last year, we identified the following areas where we need your help:

* Communication, Engagement and Promotion
* Platform development
* Accessibility and Inclusion
* Moderation

We'll talk again about the different areas and routes to involvement in our meet-up session on the 12th January, so please do join in so we can **make AutSPACEs work for you**.

If you want to get stuck in ASAP and know how to use GitHub, you can visit our main repository: https://github.com/alan-turing-institute/AutSPACEs
If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and we welcome anyone to contribute and get involved. We also invite you to take part (or start up) discussions on GitHub. You can do this by going to the repository and clicking on the "discussion" tab, where you can share your views:

https://github.com/alan-turing-institute/AutSPACEs/discussions

If you're not too sure about GitHub but would like to know more, _The Turing Way Book_ has a whole section on how to get started for successful collaboration and involvement. 
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility!

### Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also welcome to email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) and we will support you to be involved or answer any questions you might have. 

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Sophia, and Bastian 

00-project-documentation/communication/newsletters/newsletter-2022-02.md METASEP
# February Newsletter 2022

Hi everyone!!

Thank you for thank you for being part of our community and welcome to our February newsletter.

Email [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involveed or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us. 
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News

## Project Opportunities

## February Contributor Spotlight - Kirstie Whitaker

Today we are spotlighting Kirstie Whitaker, 

>### Tell us a little about yourself...
>
>### What are your favourite hobbies/things to do?
> 
>### What have you been working on for the AutSPACEs project?
>
>### Give your best tips and tricks for contributing:
>

## Project Information

### Get involved

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas. 
It is really important we hear the voices and perspective of all of our community members.

We have identified the following areas where we need your help:

* Communication, Engagement and Promotion
* Platform development
* Accessibility and Inclusion
* Moderation

If you would like to join one of these groups, meet and work with other autistic people, or suggest another working group, please email [Georgia](mailto:gaitkenhead@turing.ac.uk). 
If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved.
If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and here we welcome anyone to contribute and get involved.

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility!

### Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also always welcome to email [Georgia](mailto:gaitkenhead@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Soledad, Kirstie and Georgia


00-project-documentation/communication/newsletters/newsletter-2022-01.md METASEP
# January Newsletter 2022

Hi everyone!!

Thank you for thank you for being part of our community and welcome to our January newsletter. 
We are so happy you are here! Hope you had a wonderful festive break and enjoyable new year celebrations. 
For everybody celebrating the lunar New Year tomorrow, we wish you luck, happiness, and health! 
The first month of 2022 has passed pretty quickly, with lots happening for AutSPACEs, although many of us have been battling January colds and covid. 
There have been some lovely, bright sunny days here in London. 
As ever, wherever you are and however you are, the AutSPACEs community is here to offer you support and connection.

Email [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involveed or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us. 
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News

The most recent updates on the project and its progress can be found [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-updates).

Meet-ups are being held every 2nd and 4th Thursday of the month, as well as the Platform Development co-working sessions on every 1st and 3rd Tuesday of the month. 
Everyone is welcome to join! The best way to continue contributing is either through these events or by joining our Slack channel via Open Humans and heading to the #autistica-turing channel.

## New community manager positions at The Turing

The model of participatory, open science is being extended at The Turing thanks to a successful bid by PI Kirstie Whitaker, with funding for looking at AI for multiple-long term conditions, and for developing citizen science more broadly. 
This research will draw from the learnings of AutSPACEs, and the teams will connect with the AutSPACEs community.

We are currently looking for a community manager, and you can find out more here.

Closing date is 6th February, at midnight. 
Interviews will be held later in February, and the panel will include an AutSPACEs community member.

## Successful MozFest bid

Sophia and Georgia were accepted to present on AutSPACEs at MozFest 2022, a festival of open science. 
The festival will be held online in March. 
We are looking for autistic collaborators to co-present, so if you have made a contribution to AutSPACEs and would like to be involved, let us know by emailing [Georgia](mailto:gaitkenhead@turing.ac.uk). 

## Design work for the AutSPACEs platform

Soledad and Sophia have now created designs for many of the AutSPACEs platform pages. 
The designs are based on the rainbow infinity symbol for neurodiversity as well as recommendations and feedback from the community. 
The designs were presented at a recent meet up session and new comments and feedback are being incorporated.

## Progress on moderation

Susanna and James have been making more progress on moderation for the AutSPACEs platform and have been thinking carefully about how to write guidelines for making posts about others. We want autistic people to make rules and guidance so that everyone's posts are respectful and useful. 
You are all invited to get involved via our Issues and Pull Requests on GitHub. 
Take a look at the Moderation Milestone to find out more. 
You can also join a meet up session to join in the co-creation of the guidelines.

## Method Paper Draft complete

We've completed a paper on recommendations for combining participatory research, open source, and citizen science, which is now being reviewed by the authors.

Anyone is invited to join in the user research, design or moderation work by taking part in our development sessions on the 1st and 3rd Tuesdays of the month, or our meet-up sessions on the 2nd and 4th Thursdays.

## Project Opportunities

### Opportunities for contribution

There are lots of areas, as defined above, where you can get involved in the project.

If you are not too sure where to get started, here are a few beginner issues you might want to look at:

"Link to other organisations." Issue #590
"Collate content for the platform's About page." Issue #529
"Collect impact stories for the AutSPACEs project." Issue #548

All other issues for the project can be found in our repository. If any of these issues seem interesting, please comment on the issue if you have a GitHub account. 

If you don't have an account, no worries! 
Simply send [Georgia](mailto:gaitkenhead@turing.ac.uk) an email letting her know that you would like to contribute.

## January Contributor Spotlight - Soledad Li

Today we are spotlighting on Soledad Li who has been a key contributor to the AutSPACEs via meet-ups, design work, and code.

>### Tell us a little about yourself...
>
>Hi everyone. 
>I am Xiaojing Li from China and you can call me Soledad. 
>I am an M2 Digital Sciences student from The University of Paris, and am currently doing my internship in web development at AutSPACEs.
>
>### What are your favourite hobbies/things to do?
> I love visiting vegetable markets and cooking in my free time. 
> Food is my energy source. 
> I love experimenting with new dishes and sharing dishes out with my family and my friends. 
> Apart from that, I like curating and building art projects with my friends together.
>### What have you been working on for the AutSPACEs project?
>
>I have been working on the design, user research and the frontend development of AutSPACEs. 
>Apart from that, I get the chance to host the meet-up every other two weeks. With support from Sophia, I got to build a set of user personas and user matrices to understand the user needs for AutSPACEs and identify key features of the platform. 
>I am currently working on the frontend code part, like refactoring codes, and building templates for future contributors to use. 
>I have learned a lot from this process and am super exicted to see the final results.
>
>### Give your best tips and tricks for contributing:
>
>I think the best tip for contributing is to be brave and take the initiative! 
>When I first joined the AutSPACEs project, I was always afraid to mess up work or to create some unnecessary trouble, and did not participate so much. 
>Later, Kirstie assured me that there was no need to worry, and encouraged me to find tasks on my own. 
>With her support and encouragement, I got to contribute more to the project, as well as improving my skills in communication, design, and programming. 
>I think this advice is one of the best tips I have received, and I'd love to share it with others as well!

## Project Information

### Get involved

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas. 
It is really important we hear the voices and perspective of all of our community members.

We have identified the following areas where we need your help:

* Communication, Engagement and Promotion
* Platform development
* Accessibility and Inclusion
* Moderation

If you would like to join one of these groups, meet and work with other autistic people, or suggest another working group, please email [Georgia](mailto:gaitkenhead@turing.ac.uk). 
If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the Project and for Platform Development. 
If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and here we welcome anyone to contribute and get involved.

If you're not too sure about GitHub but would like to know more, _The Turing Way Book_ has a whole section on how to get started for successful collaboration and involvement. 
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility!

### Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also always welcome to email [Georgia](mailto:gaitkenhead@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Soledad, Kirstie and Georgia

00-project-documentation/communication/newsletters/newsletter-20211123.md METASEP
# November Newsletter

Hi everyone!!

Thank you for opening and reading November's newsletter.
We are so happy you are here!
We hope you are enjoying the beautiful colours of the season, and have lots of nice things to look forward to in the Autumn and Winter. 
Change is the one thing that seems to stay constant, and it affects everyone differently. 
So, if anyone is struggling with these challenging times, we hope that the citizen science community can offer you support and connection.

Email [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News
The most recent updates on the project and its progress can be found [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-updates).

Meet-ups are being held every 2nd and 4th Thursday of the month, as well as the Platform Development co-working sessions on every 1st and 3rd Tuesday of the month. 
Everyone is welcome to join! 
The best way to continue contributing is either through these events or by joining our Slack channel via Open Humans and heading to the #autistica-turing channel. 

### Design work for the AutSPACEs platform

Sophia (a.k.a. 'Agenda Bot') and Soledad have been busy working on user experience research and a design system for the AutSPACEs platform. 
This will help make sure the platform is built on community members' true needs. 
Sophia and Soledad presented on AutSPACEs [personas](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/platform-designs/design-research/Personas) and [information architecture](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/platform-designs/design-architecture) for the most recent meet-up session. 
You can find information about the design and user research work [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/platform-designs). 
Anyone is invited to get involved via. our Issues and Pull Requests on GitHub. 
Take a look at the [Design Milestone](https://github.com/alan-turing-institute/AutSPACEs/issues?q=is%3Aopen+is%3Aissue+milestone%3A%226.+Design+for+MVP%22) to find out more.

### Code of Conduct Presentation
Susanna and James have been busy working on a code of conduct. 
Susanna presented the first draft the code of conduct for the most recent meet-up session. :tada: You can find the draft [here](https://docs.google.com/document/d/1qhBlUxMVv8F_QGuY1re2xbLLZ-mNmak4TISmC-nFW58/edit). 
Anyone is invited to get involved via. our Issues and Pull Requests on GitHub. 
Take a look at the [Moderation Milestone](https://github.com/alan-turing-institute/AutisticaCitizenScience/milestone/27) to find out more.

### Method Paper Presentation to Whitakerlab
Georgia delivered a paper to The Whitaker Lab at The Turing Institute about a method combining participatory research, citizen science, and open source. 
You can view and download the slides for the presentation on [Zenodo](https://zenodo.org/record/5615381).

### Mozfest 2022 Application in the Neurodiversity and Wellbeing Space
Sophia and Georgia submitted a proposal to present on AutSPACEs in the 2022 MozFest, a festival of open science. 
If the proposal is accepted, will be looking for autistic collaborators to co-present. 
It's an exciting opportunity. 
Good luck 🤞

Anyone is invited to join in the user research, design or moderation work by taking part in our development sessions on the 1st and 3rd Tuesdays of the month, or our meet-up sessions on the 2nd and 4th Thursdays.

## Project Opportunities
### Opportunities for contribution

There are lots of areas, as defined above, where you can get involved in the project. 

If you are not too sure where to get started here are a few beginner issues which are a great place to start:

* "Define procedures for moderation workflow." [Issue #593](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/593)
* "Link to other organisations." [Issue #590](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/590)
* "Collate content for the platform's About page." [Issue #529](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/529)
* "Collect impact stories for the AutSPACEs project." [Issue #548](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/548)

All other issues for the project can be found in [our repository](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues). 
If any of these issues seem interesting, please comment on the issue if you have a GitHub account. 
If you don't have an account no worries! Simply send [Georgia](mailto:gaitkenhead@turing.ac.uk) an email letting her know that you would like to contribute. 

## Contributor Spotlight

Today we are spotlighting on **Amol Prabhu** who has been a key contributor to the AutSPACEs via meet-ups, paper writing and data management.

> **Tell us a little about yourself...**
>
>Hi, my name is Amol! 
I’m working at the Turing Institute on a 6 month secondment from the Civil Service Fast Stream. 
Previously I worked at a Fintech startup and before that I spent a few years working at pubs at bars while I was studying at Queen Mary University of London. 
I’m super interested in Biology which led me study up to MSc level in Ecology and Evolutionary Biology. 
I am currently based in East London where I live with my wonderful husky, Panucci! 
>
>**What are your favourite hobbies/things to do:**
>
>I love listening to and writing music! 
I am influenced by all styles from indie rock to jazz to hip hop and electronic stuff. 
I play several instruments but mainly play guitar and sing in a band making dreamy guitar music. 
I love reading about ecology, anthropology and evolutionary biology and going on long hikes with Panucci. 
I also love cooking and while there is no method to my culinary madness, I usually find that improvising in the kitchen yields pretty tasty results! 
>
>**What have you been working on for the AutSPACEs project?**
>
>I have joined the AutSPACEs project pretty recently so have mainly been observing the community meetups but I aim to focus working on paper writing, data agencand transparent data management. 
>
>I also hope to contribute by making outputs from previous focus groups accessible and available for researchers and other groups to use and gain insights to meet the aims of the project with a big focus on transparent, accessible and reproducible data. 
>
>**Give your best tips and tricks for contributing**
>
>Keep up with the progress of the project through the newsletter, signing up to mailing lists and coming along to the community meetups! 
I joined in simply observing for the first couple and the community is really welcoming, don’t be afraid to ask questions and ask how you can contribute and support - the best way to come up with ideas is by discussing it with the community!
>

## Project Information

Get involved.
Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas. 
It is really important we hear the voices and perspective of all of our community members. 

We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Georgia. 
If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the Project and for Platform Development. 
If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the Turing Way Book has a whole section on how to get started for successful collaboration and involvement. 
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 

Connect with us
About the project
GitHub repository
Github repository (platform development) 
Join us on Slack
Follow us on Twitter

You are also always welcome to email [Georgia](mailto:gaitkenhead@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Amol, Soledad, Kirstie and Georgia

00-project-documentation/communication/newsletters/newsletter-20210430.md METASEP
# Newsletter | May 2021 📰

**Hi everyone!!**

Firstly, thank you for opening and reading this month's newsletter 😄 We are so happy you are here!

We are well into May, filled with bank holidays and hopes for sunny weather soon 🤞

There is a lot of change happening right now with the COVID roadmap having come out a couple of months ago and things starting to open up. 
If anyone is struggling with these challenging times, we hope that the citizen science community can offer your support and connection.

Email [Lotty](mailto:ccoupat@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone! 💮

## Project News

### New members!!

We are excited to introduce to you two new members of the project team: 

**Sowmya Rajan**

> I am Sowmya, a second year Digital Sciences Master Student at the Centre for Research and Interdisciplinary. 
> I mostly like to research and apply data analysis on various interesting topics to understand better everyday! 
> Right now, I am working as an intern for the AutSPACEs project on the development part where I help in implementation of the digital prototype. 
> My favorite hobbies are reading books and going for long hikes. 
> You can reach out to me anytime, I am always happy to help 🙂

**Lotty Coupat**

> Hello everyone! My name is Lotty and I am currently working as the Community Manager for the AutSPACEs Project, over on secondment from the Civil Service. 
> As the community manager, my aim is to get our commmunities together to ensure paritcipation and collaboration on the project. 
> A lot of my background has been in the delivery of user centered digital products within government to ensure adoption and adaption to change. 
> In my spare time I love to dance and cook delicious meals 🥘
> I'm really excited to be working on this project and happy to help wherever possible so please don't hesitate to get in contact with me! 

### Meet-up sessions

We've had three recent online meet-ups (8 April, 22 April and 13 May) where we have focused on the scope of the project and moderation of the platform and its stories. 
We have presented the Platform Development so far and ideas for Community Engagement and we have, of course, introduced our new members as above.
I would like to thank everyone who is getting involved with these meet-ups as contributions from the community is key in ensuring this project progresses!

To catch up on the meet-ups, please find the summaries on our [Meet-up Website](https://www.notion.so/Welcome-to-the-AutSPACEs-Meet-Up-Page-0ad17d5c0f8045be8618686531068622). 

**Take part in the next meet-up session!**

It is open to anyone who would like to join and start collaborating. 
To see what kind of areas you can get involved in, please see information below in the "Get Involved" section!

**When?** Thursday 27 May 2021, 12:30-14:30 BST.

**How?** Join us on Zoom: https://turing-uk.zoom.us/j/92231923469?pwd=TXFCNFZISzJjajFoaUpIOG1MTURKdz09  
 
### We are on Twitter!

AutSPACEs has a [Twitter account](https://twitter.com/AutSpaces)!
Please go and give us a follow!

We post a lot of our project updates and advertisements for AutSPACEs on there, so it is a great platform to keep up to date with. 

If you are social media savvy we would love to hear from you and get input into running the account, sharing it, and using it to promote the platform.

### We have a Slack Channel!

We also use Slack as a communication channel to advertise to our community our latest events and project progress and any opportunities for wider persepctives and comments. 

To use Slack you will have to create an account which is quick and easy and then you have full roam of what Slack has to offer.

We want to use this as a channel to get information, provide comments and thoughts but also to chat with others in the AutSPACEs community.
So overall, it's a great place to get involved.

To join the Slack channel you will firstly need to go through [Open Humans Slack](https://slackin.openhumans.org/) and set up an account and once that's done then follow this [link](https://openhumans.slack.com/archives/CNMECPNCD) to our channel. 

### Get involved

Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas.
Is it really important we hear the voices and perspective of all of our community members. 
We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Lotty at [ccoupat@turing.ac.uk](ccoupat@turing.ac.uk).

If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 

## Project Opportunities

We currently are looking for opportunities to spread the word of the project to increase paricipation. 

If you have any ideas for this, we would love to know, please send your ideas via email to [Lotty](ccoupat@turing.ac.uk).
This could be anything from talks with charities/univeristies or posts in various communications channels that you are a part of. 
Please share any information with any individuals who you think would be interested in joining and contributing to the project.

## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)

You are also always welcome to email [Lotty](mailto:ccoupat@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Lotty, Sowmya, Kirstie and Georgia 💮

00-project-documentation/communication/newsletters/newsletter-20210224.md METASEP
# Newsletter | February 2021
*Date sent: February 24th 2021*

Hello,

We're already more than one month into 2021! 
We hope your year has had a good beginning. 
For those struggling with these challenging times, we hope that the citizen science community can offer your support and connection.

Email Georgia at gaitkenhead@turing.ac.uk to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone!

## Project News

### Meet-up sessions

We have had our first two online meet-up sessions on Thursday (28th January) and Thursday (11th February). 
This included a wonderful set of developers, researchers, and autistic collaborators with a whole variety of skills and perspectives. 
Thank you everyone who took part!

Take part in the next meet-up session! 
It is open to all and you can find out more on the meeting's shared Google Doc.

When? Thursday 25th February 2021, 12:30-14:30 UTC (see in your time zone)

How? Join us on Zoom: [personal zoom link]

Agenda:

|Time (GMT)|Activity|
|:---|:---|
| 12:30pm | 👋 Welcome, code of conduct review |
| 12:35pm |	Tour of the project and updates |
| 12:40pm |	Introductions and goal-setting |
| 12:50pm |	Icebreaker - Zoom cartoons |
| 1pm |	☕️ Break |
| 1:05pm |	Breakout room discussion 1 |
| 1:35pm |	☕️ Break |
| 2pm |	Breakout room discussion 2 |
| 2:25pm |	Open discussion: celebrations, reflections and future directions |
| 2:30pm | 👋 Close |
 
### We are on Twitter!

AutSPACEs now has a Twitter account! Follow us: https://twitter.com/AutSpaces!

If you are social media savvy we would love to hear from you and get input into running the account, sharing it, and using it to promote the platform.

### Get involved

Following the first meet-up group session on Thursday 25th January, a number of areas crucial to the project were identified in which people were interested in helping out:

   *  Research
   *  Community engagement
   *  Promoting the platform
   *  Web development

If you would like to join one of these groups and meet and work with other autistic people, or to suggest another working group, please email Georgia at gaitkenhead@turing.ac.uk.

### Take part in the ACCEPT study.

A team of clinicians, researchers and experts by experience are running a project to understand and share ways to help health, social care and public facing workforces across England to work with autistic people more effectively. 
We want to help them make use of the Core Capabilities Framework for Supporting Autistic People (2019). Y
ou can help by filling in the ACCEPT survey.

### Presenting the project.

The project is being presented on the 26th February from 2pm-3pm for the Social Data Science Special Interest Group at The Turing. 
It is not a public event, but if you are interested in joining email Georgia at gaitkenhead@turing.ac.uk and she will link you to the event.

## Introducing Alice

Alice recently joined the Autistica/Turing citizen science project and has already launched herself into collaborating, co-facilitating our first online meet-up session and brainstorming strategies of engagement and areas of research for the project. 
She is also founder, director, and CEO of a social purposes organisation based in Brighton and working across the South-East. 
It works with young refugees and asylum seekers. 
Alice founded it almost 20 years ago. 
The organisation is called 'Pathways to Independence'. 
It provides support and accommodation to young refugees and asylum seekers, unaccompanied 16+. 
You can find our more on the organisation's website.

Here she is:

And here she is in her own words:

>"I'm a 47 year-old late-diagnosed autistic woman and mother. I am actually multiply neurodivergent: I'm autistic, and I have attention differences. My proudest achievement is that I'm a Mum to my daughter Isobel, who is also multiply neurodivergent and late diagnosed. We live together in our home in Brighton with our cat Belle, who I say to my daughter is also autistic - and that's why I picked her, because she's very spectacular, unusual and special."
>
>"I think something interesting about my story, which I think is becoming more and more common now, is I've lived life both sides of the river. I've lived for 46 years as a neurotypical person, and I've only lived the past year and a half knowing that I was neurodivergent / autistic. Getting a diagnosis was life-changing for me. My motivation for getting diagnosed wasn't because I needed extra support, it was more because of curiosity, and because of my daughter and gaining better understanding for her. So, my diagnosis came as a positive thing, as a quest of curiosity and self-knowledge, rather than being because I was experiencing problems in my life. So that's actually quite an unusual thing. I wasn't "diagnosed" in that pathology paradigm of something being wrong or needing fixing. So for me, I think that's quite an interesting angle, that my diagnosis was about something more, it was about identifying my strengths - but also so that I could locate some of the challenges or 'differences' that I'd previously experienced in my neurotypical life."
>
>"For me to be neurodivergent is just a different way of being in the world, and describes my relationship to the world and people. I always grew up feeling different, and not really understanding why. I had different feelings about things, different reactions to things, and I felt like a refugee of life actually - which is quite interesting given my work. I felt dislocated and alienated, without a home or belonging to a community of similar people. So when I got my diagnosis I could make sense of why I felt and thought differently and I finally found my people and my community. It was validating. A lot of the things I would criticise myself for, like that I couldn't understand things in the same way other people did, or that I couldn't think about things in the same way - which can lead to really negative feelings about yourself, which can become a self-perpetuating cycle."
>
>"Some autistic people may have quite switched off experiences, but for me, I experience life in glorious technicolour and experience things vividly. Don't get me wrong, I'm not seeing things dancing - it's rooted in reality, but I see and feel things very intensely. My particular profile is I'm hyper-sensitive : hyper-empathic and hyper-emotional. So, an example of that would be that if I saw a suffering animal or a dead animal, I would experience actual physical pain, like trauma. My upset will manifest in internal pain, and it will literally be like experiencing deep emotions and pain for a couple of days. You're carrying this physical and emotional trauma of the pain or suffering of this animal with you. So, that's an example of how I might experience an event differently to other people, and which makes me neurodivergent. So around people and environments, it can be highly triggering and elicit reactions and responses that are felt differently and seen by others as unusual or different."
>
 >"Being autistic can make me different to people, so it can disconnect and separate me - but also, for me, I feel really proud to be autistic / neurodivergent, as it's given me strengths. It's given me strength and it's given me power in certain situations, and being autistic I believe explains my success in life. For example, the impulsivity often negatively associated with ADHD within the 'disorder' lens, which can lead some people into negative, painful experiences - that 'impulsivity' led me into something really positive - the risk-taking needed to set my own business up and gave me the courage to take that risk, where I may have not without my neurodivergence. So that core-deficit diagnosis model is turned on its head!"
>
>"For me, there's both 'despite of', and 'because of,' with being autistic. Being autistic has led to challenges, but, as above, it's also opened doors to things and people and worlds I would never have imagined. I feel that it's something that I need to protect and honour and really take care of, something so special and valuable. It's like harbouring a very precious, unique vase inside of you that you have to really take care of. A vase of Superpowers! When I got my diagnosis, it lead to greater self-compassion through self-understanding, and therefore greater kindness (and forgiveness) to myself. Before I used to be very self-critical, feeling like I was doing things wrong, because of the expectations / reactions of the outside world, sometimes. This led to my own and (sometimes others') negativity about my difference. Once I understood I was neurodivergent, everything changed and was transformed: it was like looking in a kaleidoscope and then being able to switch my whole life, and see my life in a whole new way, going forwards. It's liberating and freeing, giving you better tools for a better future for yourself, but also, a grief, as you look back and imagine how differently your life may have been with this lens, and you may feel sorrow and sadness for the life you had or the life you lost"
>
>"My friends and colleagues in the autistic community are trashing the old deficits-medical-model of autism - the "pathology paradigm" - ideas around lack of theory of mind and lack of empathy. Luckily, we have a raft of newer ideas about 'autism' aligned with social models of disability - not as tragedy - as neurodiversity - a neurodiversity paradigm - neurological differences - being part of ALL humans and what it is to be human. Yes, there are some individuals on the spectrum, as there are some individuals not on the spectrum, who may have mental illness or may have a lack of empathy, just as there are many people on the spectrum and many people who are not on the spectrum who have hyper-empathy. It's not straightforward and reductionist. Many of my friends / colleagues feel we should not be using pathology language : 'disorder', 'diagnosis' 'deficit', 'fixing' people. Rather than diagnosing, we should be "identifying' environments which support autistic people, and where autistic 'strengths' can be seen, thrive and channelled. Many people feel there is no 'autism' per se, or a 'thing' that happens to a person that can be 'cured', only autistic people, and we should be talking about autistic people: about their lived experience and creating autistic spaces. To be Autistic, therefore, is an identity category, similar to class, gender, race. We should shift then from 'experts' 'looking in' and analysing brains, and shift to talking to autistic people, 'looking out', experts on themselves, and learn from their own lived narratives and lived experience. I am of that school of thought, that everyday lay notions of 'autism' as disorde or tragedy, or autistic people lacking empathy or social skills, it's really old - it's dead. Autistic voices are reclaimiing the space.
>
>"With courage, I'm talking to people like you, about my own lived autistic experience. I'm trying to help raise awareness and change the narrative, so that across communities and society there are changes in how we perceive neurodivergence and neurodiversity, and also raise awareness of 'missing' groups of people flying under the radar; either mis- or un-diagnosed e.g. women and girls and older people - due to the "rainman' stereotype. Autistic and neurodivergent people are everywhere! People like me, I have good social skills - I communicate effectively. I'm articulate, I have emotionality - a huge emotional landscape. I was missed for 46 years, my daughter for 10 tears. I believe there will be an emerginig and growing neurodivergent community going forwards."
>
>"The circles that I'm moving in now are helping raise awareness: I'm moving in academic circles, professional circles and across the autistic community. I am seeing the embracing of the 'new paradigm', and newer thinking that supports and celebrates autistic well-being and strengths. But that has to filter down. Sadly, it's rarer in the non-autistic community around me. Sadly, there's still these really old misconceptions/ stereotypes about autism amongst even professionals involved in autism - aligned with the medical model and autism as problematic - teachers, doctors, support staff - we have a long way to go. There's a lot of work to be done. But I do see it in academic and in organisational and professional circles."
>
>"I wonder, and I think maybe in 50 years time neurodivergent people are going to be the new "neurotypicals", because it's such an emerging and growing area where we are realising that neurodiversity is vast and complex and not a discreet group of Asperger's "little professors" . A realisation that human nature, what it is to be human, is not simple, predictable, not singular or binary, 'normal' and 'abnormal'. It's complex and intersectional across multiple neurologies and multiple identity categories, such as gender, class, and race. That is why intersectionality is so important; human neurology with other multi-axis, categories and dimensions. We are reframing and reclaiming those spaces, including reclaiming the language. So, for example, you're not just autistic, you may, for instance, identify across multiiple ideentity categories, e.g. as neuro-queer or crip-queer. We are also reclaiming deficit-pathology language labels. So taking derogatory or pathologising language and reclaiming it, on our terms, with power. That's what I'm really interested in, in terms of my research - all this myriad and kaleidoscopic ++++ intersectionality and multi-demintionality. Language and reclaiming it, on our terms."
>
>"How I found out about this project was that it came up on Facebook at a very random moment in my day, whilst I was busy and distracted. However, I was immediately compelled and inspired to hear more, and listened to the launch seminar when I should have been making my daughter's supper!. (I'm invested in a lot of autistic organisations, such as The National Autistic Society and Autistica, and have volunteered for a lot of autism and neurodiversity research and activities. I'd already looked at Autistica's website and seen a lot of what they did, and I've signed up to be involved in research. I feel this is a natural synergy.) I was particularly inspired in this project because of the whole sensory focus on the research, and this aspect of being neurodivergent is being massively neglected, and that this has been repeatedly raised by autistic people as important to them in terms of research priorities. I also was attracted by the citizen-science approach which is participatory ++++ for me: it is best practice for involving autistic people in research about and for them. So 2 key drivers of my interest: the fact that it's sensory-focused, which is massively under-researched, and the citizen-scientist aspect, which is massively inclusive and participatory. So I thought, "yes, I really, really want to do this, I really want to participate in this".
>
>"I actually feel platforms like this are critical, and enable some of us from the autistic community to help change things for the next generation - and that is part of a commitment and a responsibility I feel in my heart, that I will always have now - to impact / change things for other people who may not have a voice, where I may have. So I really want to be involved."

## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Join us on Slack](https://slackin.openhumans.org/)

You are also always welcome to email Georgia at gaitkenhead@turing.ac.uk if you want to be involved in any part of the project, or if you have any questions.

A cartoon drawing of two people smiling from behind a banner that says "Thanks"

Image: CC-BY license, The Turing Way Community, & Scriberia. Zenodo. http://doi.org/10.5281/zenodo.3332808
Thank You!

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Kirstie, and Alice

00-project-documentation/communication/newsletters/newsletter-2021-09.md METASEP
# Newsletter - September 2021

**Hi everyone!!**

Firstly, thank you for opening and reading this month's newsletter 😄 We are so happy you are here!

We hope that everyone has settled into September and Autumn.

We are still seeing a lot of change in our world at the moment. 
So, if anyone is struggling with these challenging times, we hope that the citizen science community can offer you support and connection.

Email [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone! 💮

# Project News

The most recent updates on the project and it's progress can be found [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-updates).

A lot of our resource has been going towards roadmapping the project and ensuring all our issues are up to date! 
Our latest roadmap can be found in our github repository [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-roadmap).

## Community Manager and continuation of the project

Lotty, our community manager, has come to the end of her placement with us and will be heading back to the Civil Service as part of her graduate scheme.
Here is a quote from her:

"My time on the AutSPACEs has been such an amazing experience, I have learnt so much and met some incredible people! Thank you to all of you for contributing and keeping the project going and special thanks to Georgia and Kirstie for their support and guidance throughout my placement at the Turing. This isn't goodbye as I think it will be hard to stay away from the project, so see you all soon!"

Meet-ups will still continue as planned on every 2nd and 4th Thursday of the month as well as the Platform Development co-working sessions.
The best way to continue contributing is either through these events or by joining our Slack channel via [Open Humans](https://slackin.openhumans.org/) and heading to the #autistica-turing channel. 

## Contributor Spotlight

Today we are spotlighting on Suzanne Iwai who has been a key contributor to the AutSPACEs platform development work! 

**Tell us a little about yourself...**

I’m 67, supposed to be retired …. 
Impossible to be that living in White City where so much development is happening.
I have three children and two grandchildren.
I’m a Geordie by birth but l was adopted by this cultural capital at aged 21. 
I’m Vice chair of my TRA, a neuro diverse expert on ruthless  inclusion and design co producing with Hammersmith and Fulham council and I'm a founder member of Agents of Change, a women’s leadership network. 
I belong to every local committee that will help me influence best practice for Autism specialist support services.

**What are your favourite hobbies/things to do:**

I am unapologetic front row attendee at burlesque and cabaret events. 
I love creating drama ..improv, fringe, immersive. 
I profess to being an unashamed wordsmith / autpoet who writes for solo inspiration and charity commissions. 
I binge watch: Good Girls, Preacher, Vikings, Frankie & Grace, Working Moms. 
I laugh, cry and scream at tv soaps, reality shows and question time. 
To get off my couch I'm learning Feldenkrais technique and l going to learn to box.
Spiritually I'm a chanting Buddhist who collects crystals, to recharge her batteries that are short on self care even though l know what that term means.

**What have you been working on for the AutSPACEs project?**

In AutSpaces l’ve tried to contribute to how we will moderate the platform following Susannas expert lead. 
I’ve tested the original prototype template right at the beginning when we were still talking in focus groups. 
I joined GitHub to see if l could understand what everyone else  was doing developing the code, creating labels and  milestones that let you see the journey this project is on. 
I’ve attended a few fortnightly meetups where we progress various issues in the breakout rooms.  
I’d say l was a fledgling researcher hiding in plain sight amidst very experienced ones … a happy citizen scientist.

**Give your best tips and tricks for contributing:**

As for how to  best get involved yourself. 
Follow us on Twitter, share your email address with us so you can regular invites to our meetups. 
Join GitHub where you will be able to see what help is needed with each task. 
Even if you can’t offer to work on some of them there’s a comment section, which is saved and read. 
You might spot a typo, something that isn’t making sense that’s been overlooked or you can see a problem emerging with moderating that we haven’t anticipated. 
You’ll be surprised what’s in your repertoire from other pieces of work you’ve participated in. 
Your perspective could be just what we need. 
Don’t be shy, step into the chorus line ! 

## Project Opportunities

### Spreading the word

We currently are looking for opportunities to spread the word of the project to increase paricipation. 

If you have any ideas for this, we would love to know, please send your ideas via email to [Georgia](mailto:gaitkenhead@turing.ac.uk).
This could be anything from talks with charities/univeristies or posts in various communications channels that you are a part of. 
Please share any information with any individuals who you think would be interested in joining and contributing to the project.

### Opportunities for contribution

There are lots of areas, as defined above, where you can get involved in the project. 
If you are not too sure where to get started here are a few beginner issues which are a great place to start:

**"Provide feedback for the project."** [Issue 552](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/552)

**"Collate content for the platform's About page."** [Issue #529](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/529)

**"Collect impact stories for the AutSPACEs project."** [Issue #548](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/548)

All other issues for the project can be found in [our repository](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues).

If any of these issues seem interesting, please comment on this issue if you have a GitHub account. 

If you don't have an account no worries! 
Simply send [Georgia](mailto:gaitkenhead@turing.ac.uk) letting her know that you would like to contribute. 

## Project Information

### Get involved

Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas.
Is it really important we hear the voices and perspective of all of our community members. 
We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 


## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also always welcome to email [Georgia](mailto:gaitkenhead@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Lotty, Suzanne, Kirstie and Georgia 💮

00-project-documentation/communication/newsletters/newsletter-2021-08.md METASEP
# Newsletter - August 2021

**Hi everyone!!**

Firstly, thank you for opening and reading this month's newsletter 😄 We are so happy you are here!

We hope that everyone has enjoyed their summer and have been able to take time off if possible. 

We are still seeing a lot of change in our world at the moment. 
So, if anyone is struggling with these challenging times, we hope that the citizen science community can offer you support and connection.

Email [Lotty](mailto:ccoupat@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone! 💮

# Project News

The most recent updates on the project and it's progress can be found [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-updates).

A lot of our resource has been going towards roadmapping the project and ensuring all our issues are up to date! 
Our latest roadmap can be found in our github repository [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-roadmap).

## Autistica Festival 

Autistica held their annual festival last month 12-16 July. 

The whole conference is now available to watch on their YouTube page [here](https://www.youtube.com/playlist?list=PLg_hTtp1fDqo6CRmisAd21OKLnjG1xdQc).

## Upcoming events

#### Open Humans Community Call 

We have a slot at the Open Humans monthly community call to present and discuss the AutSPACEs project. 

Details on upcoming events, as well as the community calendar, for Open Humans can be found [here](https://docs.google.com/document/d/1p61Zp48JXYxc5tB2q7WR51ZQ8_TS0s8-LDtvVSC88QA/edit).

#### CC Summit 

We also have a slot to present the AutSPACEs project as this years CC Summit event taking place on September 23 2021. 

More information on the event can be found [here](https://summit.creativecommons.org/).

## Contributor Spotlight

Today we are spotlighting on Robin Taylor who has been a key contributor to the AutSPACEs platform development work! 

**Tell us a little about yourself...**

I’m Robin Taylor. 
I studied mathematics and operational research at university and then spent most of my working life in insurance and risk management. 
I was made redundant a few years ago which led to early retirement. 
Just before then, I had been approached in a pub and asked to become Treasurer of the Pagan Federation, which led to becoming President until I stepped down last year. 
We are an entirely volunteer organisation and I am still extensively involved, while in the process of handing over most of my responsibilities.

One of my adult children has a diagnosis of autism. 
I have come to realise that I share some of the characteristics without having sought or needed a formal diagnosis. 
While admitting the difficulties in diagnosing dead people, there is certainly evidence of autism in my family history on my father’s side.

**What are your favourite hobbies/things to do:**

I’ve always been interested in too many things. 
I have been bringing to life again my interest in mathematics and computer science, which had been buried under the demands of working life. 
There is a part of me that is interested in decolonial anthropology as a way of seeing what may be possible in changing the world for the better. 
I also enjoy going for long walks, looking at wildlife and archaeology, and taking photographs.

**What have you been working on for the AutSPACEs project?**

I’m currently working on platform development, which has provided impetus for a long standing project to learn Django.
I sometimes contribute to moderation discussions where my experience from a volunteer organisation with a social media presence can be useful.

**Give your best tips and tricks for contributing:**

Relax and appreciate that this is a participatory project for neurodiverse people, and what you say will not be used against you.

Discussions about autism are much more interesting and useful if the majority of those in the room are either autistic or open to the possibility that they might be so. 
There is then much less need to fight off labels, projections, and assumptions about a lack of empathy and imagination. 
With the lack of stigma, an honest discussion can take place. 

One of the most significant discussions of my life was in a social context with someone who had also been a mathematics student. 
We were reflecting on our past experiences in groups of people with significant unacknowledged autism. 
We became open to the possibility that we ourselves were to some extent autistic, evidenced by remembering learning social skills a few years later than our contemporaries.

## Project Opportunities

### Spreading the word

We currently are looking for opportunities to spread the word of the project to increase paricipation. 

If you have any ideas for this, we would love to know, please send your ideas via email to [Lotty](ccoupat@turing.ac.uk).
This could be anything from talks with charities/univeristies or posts in various communications channels that you are a part of. 
Please share any information with any individuals who you think would be interested in joining and contributing to the project.

### Opportunities for contribution

There are lots of areas, as defined above, where you can get involved in the project. 
If you are not too sure where to get started here are a few beginner issues which are a great place to start:

**"Collate content for the platform's About page."** [Issue #529](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/529)

**"Create a promotion pack for AutSPACEs project."**[Issue #516](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/516)

All other issues for the project can be found in [our repository(https://github.com/alan-turing-institute/AutisticaCitizenScience/issues).

If any of these issues seem interesting, please comment on this issue if you have a GitHub account. 

If you don't have an account no worries! 
Simply send [Lotty](mailto:ccoupat@turing.ac.uk) letting her know that you would like to contribute. 

## Project Information

### Get involved

Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas.
Is it really important we hear the voices and perspective of all of our community members. 
We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Lotty at [ccoupat@turing.ac.uk](ccoupat@turing.ac.uk).

If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 


## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also always welcome to email [Lotty](mailto:ccoupat@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Lotty, Robin, Kirstie and Georgia 💮

00-project-documentation/communication/newsletters/newsletter-2021-07.md METASEP
# Newsletter - July 2021

**Hi everyone!!**

Firstly, thank you for opening and reading this month's newsletter 😄 We are so happy you are here!

We hope that everyone is enjoying the summer months and taking time off where possible. 

This month we have seen the COVID roadmap coming to an end, which can be very daunting! 
If anyone is struggling with these challenging times, we hope that the citizen science community can offer your support and connection.

Email [Lotty](mailto:ccoupat@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone! 💮

# Project News

The most recent updates on the project and it's progress can be found [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-updates).

A lot of our resource has been going towards roadmapping the project and ensuring all our issues are up to date! 
Our latest roadmap can be found in our github repository [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-roadmap).

## Autistica Festival 

Autistica held their annual festival this month 12-16 July. You can find information on what aspects were discussed at their [website](https://www.autistica.org.uk/get-involved/research-conference/research-festival-2021-programme). 

We had Georgia and Susanna talk about the AutSPACEs project and it got some great responses! Thank you to you both for all your hardwork on that. 

They usually upload all recordings of the festival on their youtube channel [here](https://www.youtube.com/channel/UCOczrUsUjmBbUMPT0HIgGKg/featured).

## Contributor Spotlight

Today we are spotlighting on Susanna Fantoni who has been a key contributor to the AutSPACEs moderation work! 

**Tell us a little about yourself...**

I’m Susanna Fantoni and I’m nearly 26. I was diagnosed with epilepsy at the age of three and then autism when I was 15.
 
I went through most of my education without an autism diagnosis and by the time I got it, was already approaching sixth form.
So I never received sufficient support.
 
In 2012, I was unfairly forced to leave school due to my epilepsy and mental health. 
I joined my local FE College where I thrived. I got myself a place at the University of Sussex where I not only completed a degree but my Master’s also!
 
Since then I’ve been on what I call a prolonged hiatus. In 2019 my epilepsy got really bad and then in 2020, COVID came along. 
But thanks to AutSPACEs, I’m now back on track.

**What are your favourite hobbies/things to do:**

My long-term special interest is Doctor Who. However, I’m a big fan of TV in general as well radio.
 
At the moment my main hobby is knitting. I started knitting in 2019 after I had surgery and wanted to find something I could do from bed whilst recovering.
 
Since then my biggest achievements have been: a striped jumper for myself, a buttoned waistcoat for my grandpa and a beautiful shawl for my grandma. I’m also working on several pairs of socks as I get bored when repeating something so jump from project to project quite a lot. 

I’m also a writer and am trying to get back into reading via audiobooks.

**What have you been working on for the AutSPACEs project?**

I first participated in AutSPACEs as part of a focus group but I’m now co-leading the moderation team. 
 
We’re working on creating the Code of Conduct (CoC) for the site and the methods through which submitted stories will be assessed. As a lot of users will be autistic people, there needs to be a fair system that prevents potentially harmful content from being published but also makes sure the users understand why their content is inappropriate. 
 
This is why creating a CoC that gets information across clearly is so important. Having other autistic people involved is key to this, not only to make sure it is understandable, but also to assure we don’t miss anything out. After all, everyone is different.

**Give your best tips and tricks for contributing:**

In full honesty, my main tip would simply be to just come along. This project is vast, which means if we’re not already working on something you’re interested in, we probably will be at some point. You may also discover a whole new interest.
 
I’ve never worked on moderation before but it’s a perfect fit. It mixes my interest in ethics with my logical mindset. And also pulls in the knowledge I have from my MA in Digital Media. 
 
There really is a purpose for everyone in this project, even if it’s just giving your opinions/feedback. So, if you have the time and interest, there’s really no reason not to come along and see what you think. 

## Project Opportunities

### Spreading the word

We currently are looking for opportunities to spread the word of the project to increase paricipation. 

If you have any ideas for this, we would love to know, please send your ideas via email to [Lotty](ccoupat@turing.ac.uk).
This could be anything from talks with charities/univeristies or posts in various communications channels that you are a part of. 
Please share any information with any individuals who you think would be interested in joining and contributing to the project.

### Opportunities for contribution

There are lots of areas, as defined above, where you can get involved in the project. 
If you are not too sure where to get started here are a few beginner issues which are a great place to start:

**"Collate content for the platform's About page."** [Issue #529](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/529)

**"Add accessibility requirements as checklist."** [Issue #522](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/522)

**"Create a promotion pack for AutSPACEs project." **[Issue #516](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues/516)

If any of these issues seem interesting, please comment on this issue if you have a GitHub account. 
If you don't have an account no worries! 
Simply send [Lotty](mailto:ccoupat@turing.ac.uk) letting her know that you would like to contribute. 

## Project Information

### Get involved

Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas.
Is it really important we hear the voices and perspective of all of our community members. 
We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Lotty at [ccoupat@turing.ac.uk](ccoupat@turing.ac.uk).

If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 


## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also always welcome to email [Lotty](mailto:ccoupat@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Lotty, Susanna, Kirstie and Georgia 💮

00-project-documentation/communication/newsletters/newsletter-2021-06.md METASEP
# Newsletter - June 2021

**Hi everyone!!**

Firstly, thank you for opening and reading this month's newsletter 😄 We are so happy you are here!

June is showing us some warmer weather that I really hope is raising spirits! 

There is a lot of change happening right now with the COVID roadmap having come out a couple of months ago and things starting to open up. 
If anyone is struggling with these challenging times, we hope that the citizen science community can offer your support and connection.

Email [Lotty](mailto:ccoupat@turing.ac.uk) to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Best wishes for everyone! 💮

# Project Update

The most recent updates on the project and it's progress can be found [here](https://docs.google.com/presentation/d/1gW2twVD52a5MCjm_MrHdi464YHNFluNyPMWN-96lOjM/edit?usp=sharing).

A lot of our resource has been going towards roadmapping the project and ensuring all our issues are up to date! 
Our latest roadmap can be found in our github repository [here](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/project-management/project-roadmap).

## Contributor Spotlight

Today we are spotlighting on Anoushka Ramesh who has been a key contributor to the AutSPACEs platform development! 

**Tell us a little about yourself...**

Hi everyone! 
I’m Anoushka Ramesh, a Computer Science undergraduate from India and an active contributor to AutSPACEs. 
Interestingly enough, my love for Computer Science really grew during the pandemic where I first started delving into mini projects related to frontend technologies like HTML, CSS and slowly made my way to learning APIs and other tools like Python, React and Django. 
The open source path looked like a perfect opportunity to apply my new found knowledge for a good cause. AutSPACEs caught my eye as I was going through the list of INCF open source projects for the Google Summer of Code program. 
It sounded like a wonderful project that aimed to dig deep into understanding the experiences of autistic people and what causes environments to be better or worse for autistic people.
So, now it has been almost a month of contributing to AutSPACEs and it has been nothing short of exciting to say the least!

**What are your favourite hobbies/things to do:**

My university has an active computer science club called [amFOSS](https://amfoss.in/) where I contribute to interesting projects and learn new skills. 
Infact, this is where I got introduced to the concept of open source and contributing to organizations. 
I also like writing blogs and coming up with social media content for the club. 
Apart from club activities, I love singing, dancing, reading (Agatha Christie’s novels are a personal favourite), baking and public speaking.   

**What have you been working on for the AutSPACEs project?**

Currently, I’ve been collaborating with the AutSPACEs community and the platform developers to understand the immediate needs and requirements of the site. 
I’ve worked on building the landing page and the share experiences page as part of the Milestone 2 issues. 
I have also helped other contributors with any problems or issues they’ve faced while building the site locally or understanding the code base. 
We’ll almost be completing Milestone 2 and we’re looking forward to working on Milestone 3!

**Give your best tips and tricks for contributing:**

One helpful tip to follow while contributing is to ‘commit and communicate’. 
Commit your work to the repository as often as you can and ensure that you communicate to your project mentors or lead developers on the team regarding those work updates. 
This essentially serves two purposes:-
- Your mentors/lead devs are aware of the progress you’re making
- You can make use of the opportunity to ask any doubts or queries that you may have in addition to giving your updates

Keep in mind that project heads are very busy people so it’s always best to plan and ask them in advance regarding any meetings that you would like to have. 
Considering their hectic time schedules, it would also be better to try addressing the code issues yourself first before approaching the project leads. 
Google comes in really handy to address almost any problem you may have in mind. 
So, the next time you’re stuck on an issue, always remember to Google it!


## Project Information

### Keep udpated via our Social Media Platforms!

**TWITTER** - AutSPACEs has a [Twitter account](https://twitter.com/AutSpaces)!
Please go and give us a follow!

If you are social media savvy we would love to hear from you and get input into running the account, sharing it, and using it to promote the platform.

**SLACK** - We also use Slack as a communication channel to advertise to our community our latest events and project progress and any opportunities for wider persepctives and comments. 
This is a key area to discuss project work with other contributors!

To join the Slack channel you will firstly need to go through [Open Humans Slack](https://slackin.openhumans.org/) and set up an account and once that's done then follow this [link](https://openhumans.slack.com/archives/CNMECPNCD) to our channel. 

### Get involved

Our project consists of many different areas where we would love people to contribute to and give us their thoughts and ideas.
Is it really important we hear the voices and perspective of all of our community members. 
We have identified the following areas where we need your help:

*  Research
*  Communication, Engagement and Promotion
*  Platform development
*  Accessibility and Inclusion 
*  Moderation

If you would like to join one of these groups, meet and work with other autistic people, or to suggest another working group, please email Lotty at [ccoupat@turing.ac.uk](ccoupat@turing.ac.uk).

If you want to get stuck in ASAP and know how to use GitHub, you can visit our repositories for the [Project](https://github.com/alan-turing-institute/AutisticaCitizenScience) and for [Platform Development](https://github.com/alan-turing-institute/AutSPACEs). If you look at the issues list in each of these, you can see a list of tasks that need to be completed and here we welcome anyone to contribute and get involved. 

If you're not too sure about GitHub but would like to know more, the [Turing Way Book](https://the-turing-way.netlify.app/collaboration/github-novice.html) has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! 

## Project Opportunities

We currently are looking for opportunities to spread the word of the project to increase paricipation. 

If you have any ideas for this, we would love to know, please send your ideas via email to [Lotty](ccoupat@turing.ac.uk).
This could be anything from talks with charities/univeristies or posts in various communications channels that you are a part of. 
Please share any information with any individuals who you think would be interested in joining and contributing to the project.

## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* [Github repository (platform development)](https://github.com/alan-turing-institute/AutSPACEs) 
* [Join us on Slack](https://slackin.openhumans.org/)

You are also always welcome to email [Lotty](mailto:ccoupat@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Lotty, Anoushka, Kirstie and Georgia 💮


00-project-documentation/communication/newsletters/newsletter-20200731.md METASEP
# Autistica/Turing Citizen Science Newsletter | July 2020

Hello, 

Hope you're all doing well and getting to enjoy the summer. It's been an unusual few months, and if you feel like time is passing strangely, you're not alone! Thank you for being engaged with us and continuing to support the project. It's inspiring to be able to do work with such committed and passionate people.

Email Georgia at gaitkenhead@turing.ac.uk to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us. 

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Warm wishes to all! 

## Project News

### Repository redesign

We've been doing more design work on the project's website and repository. We'd like everything to be easier to find and welcoming to newcomers! This is still a work in progress, but if you are interested have a look and let us know what you think? 

You can follow the work as it progresses by using this temporary link: https://github.com/katoss/AutisticaCitizenScience

### Feeling creative?

We're looking for autistic people who would like to: 

* help design diagrams to illustrate key parts of the project so that they are easier to underestand
* create artworks to showcase the community's amazing work.

If you would like to help out, please send an email and a visual design, drawing, or image you have made to Georgia at gaitkenhead@turing.ac.uk.

## User Testing

We have some wonderful volunteers to help us test the latest designs of the platform next month. Places for 1-2-1 user testing are full, but if you would like to give your feedback, there are lots of other ways to do it:

* [put your comments in our always-open google form](https://bit.ly/AutisticaTuringCitSciForm.)
* or email Georgia at gaitkenhead@turing.ac.uk

For September we will be looking for more volunteers to do user testing work. Please get in touch with Georgia at gaitkenhead@turing.ac.uk if you're interested. We'd especially like to hear from people who have special needs so we can make the platform inclusive for more people. 

## Presenting the project

July was the month of Autistica's first all-remote Research Festival! 👏👏👏 There were some amazing presentations and inspiring people. Congratulations to everyone at Autistica for such a successful event! 

We hosted a live webinar on the project. The speakers were Kirstie Whitker and Georgia Aitkenhead from The Turing, and Craig Hall, Christopher Legg and Thomas Stanley from Fujitsu. 

Most exciting of all, two participants, Lucinda Marsden and Otis Smith, gave amazing talks on their own experiences of taking part in the citizen science project, and about what matters most to them. The webinar was filmed and will be made public, and we will share a link with you all as soon as it's available. 

In the meantime, the slides are available to view and download on Zenodo.

## Introducing Katharina

Every month, we're introducing a new member of the community to show the range of people involved in the project and the variety of contributions they're making.

If you'd like to be interviewed, or to interview someone else, please get in touch with Georgia at gaitkenhead@turing.ac.uk.

This month, we're delighted to introduce Katharina Kloppenborg. Katharina started on the project just a few weeks ago, and she has already done some very impressive work designing user testing sessions and redesigning oUr file management systems. We're absolutely thrilled to have her support. 

Here she is: 

And here she is in her own words:

Over the summer I will help to increase community involvement within the project. I'm collecting user feedback on the current version of the prototype and developing guidelines for future user tests, so that everyone can plan, perform and analyze these tests. I'm also working on how to make it easier for new contributors to get started. For example, I am reviewing and restructuring the various online resources of the project, especially the GitHub repository.
 
This September I will start a PhD in which I will investigate if peer production principles are transferable to citizen science platforms. I have never been involved in a citizen science project before, so I'm glad to be able to gather some first-hand experience now. I'm sure that contributing to the Autistica Citizen Science Platform will be very helpful in getting my PhD off to a successful start. Moreover, this is my first closer contact with people from the autistic community, and it is really interesting to learn how people perceive the world differently - most of which I (and I am sure that applies to many other people as well) was unaware before. So I think it is important to build this platform in order to create a means with which autistic people can share their experiences, to educate the general public and to create a valuable database for research. There is a wide range of tasks that new contributors of any background can support the project with, also many for which no coding skills are needed. Just have a look on the project's website or contact us, if you are interested!

## Connect with us

* [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience)
* [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience )
* [Always open google form](https://bit.ly/AutisticaTuringCitSciForm.)

Image: CC-BY license, The Turing Way Community, & Scriberia. Zenodo. http://doi.org/10.5281/zenodo.3332808

Thank You!

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. 
You are making a big difference in creating research which can benefit autistic people and their families. 

Very best wishes, 

Georgia, Kirstie, and Katharina

00-project-documentation/communication/newsletters/newsletter-20200630.md METASEP
# Autistica/Turing Citizen Science Newsletter | June 2020

Hello,

June has been an exciting month for the citizen science project.

Our community is continuing to grow, and it's been lovely to see people getting involved in lots of different areas, use their skills, learn new ones, and get creative.

Email Georgia at gaitkenhead@turing.ac.uk to let us know if we can help you with involvement, and do feel free to share this newsletter to anyone who you think would be interested in joining us.

They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

Hoping you are staying safe and well.

## Project News

### New website landing page

We've redesigned and updated the main page of the project.

Follow this link for the website: - https://alan-turing-institute.github.io/AutisticaCitizenScience
Follow this link for the GitHub repository: https://github.com/alan-turing-institute/AutisticaCitizenScience
Platform design

Thanks everyone who's already told us what they think of the platform designs! You can let us know anything which important to you, but there are also a specific set of questions the team have about the designs. We would love to hear your thoughts. Find more information at: https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/project-management/wireframes/community-questions.md

### Tell us what you think

We would love to hear from you! Your input is vital so that the project reflects your experience and expertise.

To give your feedback, please:

put your comments in our always-open google form
or email Georgia at gaitkenhead@turing.ac.uk

## Presenting the project

We presented the project as part of a panel discussion for CogX 2020.

CogX 2020 presentations have been uploaded to YouTube and you can watch them by following this link: https://youtu.be/yjtLKjTHCI0. Georgia's presentation starts 11:45 minutes into the video. Her slides are publicly available on Zenodo and can be downloaded by following this link: https://doi.org/10.5281/zenodo.3886557

## Workshops

Thanks to Malvika Sharan of The Turing Way project for running a GitHub session with the Fujitsu team! If you would like to learn some technical skills and join in on GitHub we can support you with free lessons and demonstrations. Please email Georgia: gaitkenhead@turing.ac.uk.

## Upcoming

### Autistica Research Festival

Adapting the yearly Discover conference, Autistica will be running a Research Festival for 2020 from 3 - 10 July.

We'll be hosting a webinar about the project on Wednesday 8 July, from 3:30 – 4:30pm. Join us and join in!

## Introducing Paul

Every month, we're introducing a new member of the community to show the range of people involved in the project and the variety of contributions they're making.

If you'd like to be interviewed, or to interview someone else, please get in touch with Georgia at gaitkenhead@turing.ac.uk.

This month, we're delighted to introduce Paul Crayson.

Paul is a developer at Fujitsu and the latest member to join the team working on the citizen science project. He's made amazing contributions helping to strategise community involvement, reviewing designs and processes, and learning GitHub and Django. Paul had his birthday this month - 🎉HAPPY BIRTHDAY🎉 from all of us.

Here he is:

Paul preferred to be interviewed over Zoom instead of responding in writing, and asked Georgia to edit. So here he is in his own words, edited and transcribed by Georgia:

I’m 58 years old, it was my birthday on the 7th June. I live in Camberley, or Frimley to be precise, but I haven’t always lived here, I lived in North London for most of my childhood. I was always very clever at school in maths and science, I got very good A level grades, and I went to Liverpool university and studied Physics, and got a First class degree.

I really loved physics. I would have gone into Physics for work, but I did work in a research place, but it turned out to be working with computers - that just happened to be the project I was working on - and I had to upskill to be able to do the project. I actually patented the method that I used to compress maps, and that patent was used in developing sat-navs. I didn’t get anything out of the patent because it’s the company that benefits not you, but it’s nice to say that you’ve registered a patent – that you’ve invented something. Physics and computing are both logical, although some of it’s not so logical, because you have to suspend belief.

Probably the most difficult experience was before I knew I was autistic, because I’ve always found it really difficult to socialise.

It’s different when I’m in a work situation, because it’s in a situation where we get introduced, by the virtue of the fact that we’re working together. But if I used to go to parties I used to just stand there saying not a word to anyone. I had no idea how to break into a conversation. All my autism is to do with communications. I’m really bad at writing, and if I can avoid having to write anything I will, which is I’m glad you’re writing this blog and not me. I do struggle to get my point across, and I’m not very good at summarising so it might take me a long time to get something out that someone else could get out in a smaller out of time.

Autism is weird. People react in completely different ways than one would expect people to react to things, and not knowing that I had autism obviously made a big difference to my life. I think my life would have been more successful if I’d known that I had autism years ago. I just wondered all those years what was wrong with me, and I saw countless psychiatrists, and no-one could get to the bottom of what was wrong with me – if somebody’s got autism, and it’s not known, then they come across like they’re a bit weird or something. But maybe autistic people are normal, and neurotypical people are the weird ones. Present company accepted of course!

To be honest, I didn’t know anything about this project until a couple of people suggested that it would be ideal for me to work on. It was a colleague who is connected with Autistica. Basically, I was sent home because of my diabetes, and I couldn’t do my normal work at home because I built laptops. I’m really glad he did connect me to the project.

I find good about it the fact that I’m doing something more.

I used to like doing software development and I’m glad I’m doing software development again. What’s challenging is there’s so much to learn.

I don’t know what I’d say to other people joining the project. I find that a very difficult type of question to answer, but I’ll try. If you have a love of development, and you’re interested in autism, then this would be ideal for you.

## Connect with us

[About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience)
[GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
[Always open google form](https://bit.ly/AutisticaTuringCitSciForm.)

You are also always welcome to email Georgia at gaitkenhead@turing.ac.uk if you want to be involved in any part of the project, or if you have any questions.

Image: CC-BY license, The Turing Way Community, & Scriberia. Zenodo. http://doi.org/10.5281/zenodo.3332808

Thank You!

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Kirstie, and Paul

00-project-documentation/communication/newsletters/newsletter-20200529.md METASEP
# Autistica/Turing Citizen Science newsletter | May 2020

Hello,

As coronavirus continues to change our patterns of life and create loss, difficulty, and uncertainty for many, we first want to acknowledge your ongoing support and offer our solidarity. As the pandemic is affecting us all in different ways, please let us know if there is anything which would make it easier to be involved in the community. Email Georgia at gaitkenhead@turing.ac.uk to let us know how we can help.

Hoping you are staying safe and well.

## Project News

It's been a busy month! The community has been growing with more people supporting us and offering input - including researchers, coders, and a new developer on the Fujitsu team who will be introducing himself for June's newsletter. A warm welcome to all - we're delighted to have you on board.

## Platform design

Fujitsu have now uploaded three videos showing slideshows of work that is being done for the platform design, and you can watch them on Youtube by following these links:

* [Sprint 1 video](https://www.youtube.com/watch?v=4f6kn5HLysc)
* [Sprint 2 video](https://www.youtube.com/watch?v=A_6uOwFZRfo&feature=youtu.be)
* [Sprint 3 video](https://www.youtube.com/watch?v=IG-Vq8m8ELA&feature=youtu.be)

### Tell us what you think

We would love to hear from you! Your input is vital so that the project reflects your experience and expertise.

To give your feedback, please:

put your comments in our always-open google form
or email Georgia at gaitkenhead@turing.ac.uk
The development team at Fujitsu work in cycles of 15 days called "sprints". If you want to view their work you can also read their sprint reports. These list actions taken, but are currently more suitable for those with a technical background. We are working on making them more accessible for those without a technical background next sprint.

## Presenting the project

Kirstie spoke at a Center for Research and Interdisiplinarity research seminar on 27 April 2020. The title of her talk was "Participatory science to improve autistic people's lives" and you can view or reuse her slides here, and watch the video recording on YouTube. It was sad not to be able to work for a few days in Paris with project collaborator Bastian Greshake Tzovaras but Kirstie really appreciated everyone who attended the remote presentation and stayed for a dynamic and inspiring discussion.

Researchers Georgia Aitkenhead and Otis Smith delivered a talk on 30th April on Growth through community. It was wonderful to be able to co-present and I really appreciate that Otis gave his own account of being involved in the project.

## Diversity and Inclusion

(A g): “we want to make it as accessible to as wide a scope of the autistic community as we can” Focus Group 18th September 2019

Making sure the project is accessible to a wide range of people is vital, and is a high priority for many in the community. We are always working on making the project more accessible and inclusive. A group of developers, volunteers from the community and researchers are currently working on a strategy to reach and engage more people, including those who may have complex needs or who are non-verbal. If you would like to be involved or tell us what would make the project easier for you or others you know, email Georgia at gaitkenhead@turing.ac.uk or fill in the always-open google form.

Help us help you help everyone.

## Welcome Bot

We've installed a new "Welcome Bot" on the project's repository to guide and encourage people when they contribute. Thanks to Malvika Sharan, James Kim, and numerous testers to fix a mysterious bug that stopped it working at first.

Image: CC-BY license, The Turing Way Community, & Scriberia. Zenodo. http://doi.org/10.5281/zenodo.3332808

If you're in the mood for something a little technical, have a look on GitHub and open or comment on an issue to let us know what you think!

## Upcoming

### CogX

Georgia will present our project for the CogX festival of AI, which is taking place online from 8 - 10 June. The project team has some free tickets for community members, so please email Georgia at gaitkenhead@turing.ac.uk if you would like to attend this virtual tech conference.

### Autistica Research Festival

Adapting the yearly Discover conference, Autistica will be running a Research Festival for 2020 from 3 - 10 July.

We're excited that Kirstie Whitaker will be taking part in a webinar for the festival! We hope to see you (online) there.

## Community News

Congratulations!

Congratulations to principal investigator Kirstie Whitaker for her appointment as the Programme Lead for Open Source Tools, Practices and Systems at The Alan Turing Institute. We're excited for her to promote the collaborative co-creation processes from this project to other data science initiatives at the UK's national institute for Data Science and AI.

## Introducing Ekaterina

Every month, we're introducing a new member of the community to show the range of people involved in the project and the variety of contributions they're making. If you'd like to be interviewed, or to interview someone else, please get in touch with Georgia at gaitkenhead@turing.ac.uk.

This month, we're delighted to introduce Ekaterina Harrison. Ekaterina volunteered to join the project in September 2019. Since then, she's provided invaluable expertise in legal compliance and data protection.

Here she is:

And here she is in her own words:

I am an English-qualified solicitor with my main expertise in banking and finance. In 2019 I started studying a postgraduate course titled Innovation, Technology and Law at the University of Edinburgh. As part of this postgraduate program, I chose courses on data protection, e-commerce and law of robotics. Knowledge obtained during my studies helps me to advise the digital projects like Citizen Science initiative at the Alan Turing Institute on all aspects of the data usage and structuring of data collection in a way which is privacy-compliant. I believe it is important that scientific projects have access to legal advice and I am very happy to provide assistance on a pro bono basis.

## Connect with us

About the project
GitHub repository
Always open google form
You are also always welcome to email Georgia at gaitkenhead@turing.ac.uk if you want to be involved in any part of the project, or if you have any questions.

Cartoon banner saying thanks with two cartoon people smiling  Image: CC-BY license, The Turing Way Community, & Scriberia. Zenodo. http://doi.org/10.5281/zenodo.3332808

Thank You!

You are making a big difference in creating research which can benefit autistic people and their families.
 

Very best wishes,

Georgia, Kirstie, and Ekaterina

00-project-documentation/communication/newsletters/newsletter-20200423.md METASEP
# Newsletter | 23 April 2020

*Date sent: 23 April 2020*

Hello, 

We hope you're doing well.
We know these must be stressful and challenging times for many, and community is more important than ever.
For those wanting support, Autistica has published a range of autism-specific resources to help people through the cornovirus pandemic.
You can access them by following this link: https://www.autistica.org.uk/what-is-autism/coronavirus


## Project News 

We know it has been a long time since we updated you about the Autistica/Turing citizen science project.
We hope you enjoy all the updates on our last few months of work!

### Focus Group summaries
Thanks to everyone who took part in the focus groups last autumn, and who reviewed the summaries. 
The dataset is published online and you can check the insights out here: https://alan-turing-institute.github.io/AutisticaCitizenScience/community-recommendations/focus-groups.

> (*A* *P* d): "…it’s not just expert advice, everyone is…coming from their life experience, from their relative’s experience, and they’re saying, 'it helped someone, I'm sure it would help others', so I think a project like this is important"

*Quote from a autistic person who is a parent of an autistic person explaining the value of the project, from the [4 October](https://alan-turing-institute.github.io/AutisticaCitizenScience/community-recommendations/focus-groups/20191004_summary-4-October-2019.html) focus group*

### To-do list 

We're creating actions based on your feedback, including from the focus groups and the online survey, and making them into a collection of issues on GitHub (which is basically a public to-do list).

You can view them online, add tasks of your own, make comments, or let us know if you think something should be especially prioritised. 

:point_right: Follow this link: https://github.com/alan-turing-institute/AutisticaCitizenScience/issues.

### Wireframes

The Fujitsu team has started working on designs from the platform.
You can see a demo video of their latest work on youtube: https://www.youtube.com/watch?v=4f6kn5HLysc

If you have any comments, suggestions, or questions about the wireframe, you can:

* Put your comments in our [always open google form](https://docs.google.com/forms/d/e/1FAIpQLSe_9MW3r4nsGUDxGWN24X88hqtz6q_347DC1gbMc_Yzj2Hrcg/viewform)
* Get in touch with the team directly on [GitHub](https://github.com/alan-turing-institute/AutisticaCitizenScience) or [Gitter](https://gitter.im/alan-turing-institute/AutisticaCitizenScience).
  You will need to create an account, but you don't have to provide your real name or any details.  
* Email Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk)

### Blog

Otis Smith, who is an autistic collarborator on the citizen science project, and Georgia Aitkenhead, a Turing researcher, co-authored a blog to celebrate World Autism Awareness Day. You can read the blog here: https://www.turing.ac.uk/blog/world-autism-awareness-day-celebration-and-citizen-science

![](/project-communications/images/blog.png)

### Workshop

Wireframing workshop: On the 27th March we ran a wireframing workshop over Zoom. 
The workshop was a mix of people from Autistica, Fujitsu, the Turing, and community members. 
You can see the notes from the meeting by following this link: https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/community-recommendations/workshops/wireframing-March2020-notes.md

![](/project-communications/images/workshop.jpg)

# Upcoming opportunities

### User testing

We've started running user testing sessions with the Fujitsu team, and we're looking for people to help give feedback. 

These will take place remotely by videocall, and you will be paid in line with involve guidelines for you time. 

Please look out for an email from Autistica! 

You can get in touch with Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) if you'd like to be involved  or if you would prefer any adjustments to be made. 

We will only be looking for one person for each session, but the sessions will reccur regularly while the platform is being built.

### Social Meet-ups 

A few of you have said that you'd like to connect with people involved in the project in a social setting and would be interested in getting to know each other better and meeting new people! :smiley:. 
One way to do it would be to have a time slot for people to join a videocall and chat if they want to. 

It would be great to hear from you about:
* whether you would be interested in having a regular time slot for an online social meeting
* what activities might be fun to do? Some thoughts from the community so far are:
    * an open discussion
    * a quiz 
    * a reading group
* when would be a good time for you? Any times you definitely can't do? 
* The Turing can host a videocall on Zoom, how would this suit you? 

Please get in touch with Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) if you'd like to give your thoughts or be involved! 

# Introducing Otis

Every month, we've decided to introduce a new member of the community to show the range of people involved in the project and the variety of contributions they're making.
If you'd like to be interviewed, or to interview someone else, please get in touch with Georgia at gaitkenhead@turing.ac.uk

This month, we're delighted to introduce Otis Smith. 

Otis has been involved in multiple aspects of the project, including giving feedback on designs, presentations, and agendas; helping to design the labelling system for the focus group summaries; helping to prioritise tasks; giving ideas and insights in workshops; and co-authoring the blog written for World Autism Awareness day. 
He also co-wrote this newsletter!  

Here he is:

![](/project-communications/images/OtisPic.jpg)

And here he is in his own words:

> My name is Otis Smith.
> 
> I live in South East London.
> 
> One of my hobbies is go to libraries or galleries.
> 
> Things I dislike are sport or anything contact-related, large crowds or noise.
> 
> My ultimate gift is seeing and making others happy.
> 
> My role is a Facilities Assistant at the Alan Turing Institute.
> 
> Since being diagnosed with autism, I have learnt various ways to engage and interact with others.
> 
> My experience of autism is hit and miss: some days are good, other days not so.
> 
> I have always had difficulties from even when I was at a younger age.
> 
> I didn’t realise it would involve so much compromise. 
> 
> At the same time, the diagnosis was the push I needed to get on track.
> 
> I joined the citizen science project because it was an opportunity that was too good to resist.
> 
> I was keen on taking part in the hope of expanding my knowledge and offering any help possible to improve the lives of autistic people.
> 
> I would hope my contributions to the project provide information that many people can benefit from and relate to.
> 
> It is not like anything I have done before.
> 
> The project is important in more ways than one: 
> 
> To make a difference to autistic people
> 
> To ‘spread the word’ about autism 
> 
> To create something that will have long-lasting but effective results.
> 
> This project is only the start of many great things to come: autistic people are powerful when we work together. 
> 
> Others should be involved because it isn’t like anything you’ve done before.
> 
> You can gather new ideas or inspiration by being on board.
> 
> Having more people on board will be a great help.
> 
> It will be the turning point that leads to open doors.
> 
> The environments we build now and the understanding we build are not just for today or tomorrow but for future generations.


# How we're coping with the coronavirus pandemic 

Here are some top tips from community members on how they are coping with the cornovirus situation. If you have tips you would to share in the next newsletter, please email Georgia at gaitkenhead@turing.ac.uk. 

* Read a book
* Write a blog, diary or journal
* Appreciate your self-beauty, worth and value – with that the effect it has on other people.
* Live in the moment
* Get a routine
* Take a walk
* If you have a dog (or other pet), they can boost your mood
* Do something you enjoy (love/like) – something that interests you.
* Try a new hobby or activity (learn a new language)
* Contact family, friends or others (whether by e-mail, text, phone).
* Have group chats or conversations (smaller if you prefer).
* Give yourself appraisal and credit – (for example, saying one good or several fine or positive things about yourself or life).
* Listen to music, an audiobook or podcast  (for example Apple/Google Podcasts, YouTube)
* Remind yourself that you do matter and have a sense of belonging.
* Do something creative (arts and crafts)
* Physical activity (can also be fun – (for example Just Dance, Zumba, Wii Sports)
* Board, card and family games (for example snap, dominoes, pairs)
* Doing chores or tasks (for example – tidying the house, washing up dishes, cleaning your room, donate items).
* Positive self-affirmations
* Breathing or muscle relaxation techniques (Mindfulness for example)
* Plan or organise a schedule (make a list or to do list).
* Sing or dance
* Photo album (memories)
* Do a course
* Watching a film, documentary

## Connect with us

- [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience)
- [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
- [Always open google form](https://docs.google.com/forms/d/e/1FAIpQLSe_9MW3r4nsGUDxGWN24X88hqtz6q_347DC1gbMc_Yzj2Hrcg/viewform)

You are also always welcome to email Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) if you want to be involved in any part of the project, or if you have any questions.  


## Thank You!

A big, heartfelt thank you to each one of you. Thanks for all your efforts and contributions, and thank you also for your strength and energy in these difficult times.  It's wonderful to be working with you. 

Very best wishes, 

Georgia, Kirstie, and Otis

00-project-documentation/communication/newsletters/newsletter-20191125.md METASEP
# Newsletter | November 2019

*Date sent: 25 November 2019*

Subject: November updates from the Autistica/Turing Citizen Science project

Hello,

This is the November 2019 newsletter for the Autistica/Turing Citizen Science project.

## Co-creating in person

### Focus groups

Thank you so much to everyone who attended the focus groups held at Fujitsu's offices in September and October.
These involved bringing together autistic people, the parents and carers of autistic people, and collaborators from Autistica, The Alan Turing Institute, Fujitsu, and subject matter experts.
(Including some participants who had overlapping areas of expertise!)
The discussions were extremely useful, and we gathered important insights which will be invaluable in progressing the goals of the project.

All 3 focus groups have now been transcribed and collated, and we’re fine-tuning the analysis process with help from an autistic collaborator.
The transcripts represent almost 15 hours of recording across 3 different sessions, requiring the editing and categorising of more than 150 pages of verbatim dialogue 🙀
(Great work Georgia!! 🙌).

The transcripts are a treasure-trove of insights, ideas, and lived experiences which are enormously valuable and hugely appreciated.
The final versions of the shorter summaries will be reviewed by the research team and sent to all attendees in early December before they’re uploaded onto GitHub.

### Technical sprint

Earlier this week we held a technical session with the Fujitsu team at The Alan Turing Institute to map out how we can best work together and with the community to deliver impact for autistic people and their families.
We also demonstrated collaborating on GitHub and agile delivery practice to share expertise and learn from each other.
There were lots of post its and some really useful conversations.
Thanks to everyone who took part!

![Georgia standing in front of a whiteboard with lots of post it notes](images/Georgia_FujitsuTuringSprint.jpg)

## Presentations

Kirstie presented the project's philosophy and progress at a Springer Nature/British Library event which brought researchers together to ask, [Can opening up research help drive innovation and tackle global challenges?](https://natureecoevocommunity.nature.com/users/59876-ruth-milne/posts/54547-can-opening-up-research-help-drive-innovation).
You can see her slides at [10.5281/zenodo.3524883](https://doi.org/10.5281/zenodo.3524883).

![Image of slide with heading "Our goals: community, education, action](images/Whitaker_OpenInnovationAutistica_November2019.jpg)

Georgia gave a 7 minute lightning summary of the project with an emphasis on community empowerment, at Springer Nature's [#SciData19](https://www.springernature.com/gp/campaign/scidata) conference.
You can download her slides here: [10.5281/zenodo.3530453](https://doi.org/10.5281/zenodo.3530453) and [watch the talk](https://figshare.com/articles/Lightning_talks_7_data_sharing_stories_SciData19/10319534) online.

![Live scribe drawings of the SciData19 lightning talks](images/SciData19_LiveScribe.jpg)

We also showcased the project at a stall at the British Library's Diversity and Inclusion event, with the help of an autistic collaborator who spoke passionately about how different environments affect him in his daily life.

Finally, you can [watch the Pint of Science panel](https://youtu.be/DNisoU9uXqk) on _Using citizen science to empower autistic people and build inclusive public spaces_ that was recorded in May with [Kirstie Whitaker](https://twitter.com/kirstie_j), [Dianna Smith](https://twitter.com/geodianna), [Georgia Aitkenhead](https://www.turing.ac.uk/people/researchers/georgia-aitkenhead), [Rebecca Sterry](https://twitter.com/bex_sterry) and [Suzanne Iwai](https://twitter.com/SuzanneIwai).

[![Title slide from video says "Empowering autistic people through citizen science"](images/PintOfScience_May2019)](https://youtu.be/DNisoU9uXqk).

## Participate

### Building connections

We would love to link up with other citizen science projects or initiatives with matching values and goals, such as creating more enabling environments for autistic people or helping involve autistic people in more empowered positions in research.
If you know of any similar projects you think it would be useful for us to connect with or learn from, we’d be really grateful if you could share your suggestions with us.

The best way to share your feedback and suggestions is to fill in our online survey: [https://bit.ly/AutisticaTuringCitSciForm](https://bit.ly/AutisticaTuringCitSciForm).

If you find the form confusing or don't want to have your suggestion publicly available (no names will be associated with the information), you can also email Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

Any general feedback relating to the project is also always very welcome!

### User testing

We will be arranging user testing sessions with the Fujitsu team, most likely to be conducted via online video conferencing, to get feedback on the design for how people can interact with the platform.

We will recruit from Autistica's Discover network so if you’re a member look out for an email after the Christmas break.

You can find out more and sign up to join the network by following this link: [https://www.autistica.org.uk/get-involved/take-part-in-research](https://www.autistica.org.uk/get-involved/take-part-in-research)

## Community updates

### Autistica Discover conference

Autistica has announced the date of the next Discover conference: [10 July 2020](https://twitter.com/Autistica/status/1197100384659165184?s=20) at the University of Nottingham.
We hope to see many of you there.

### MQ Participate

Mental health charity MQ launched their research participation platform this week: [https://participate.mqmentalhealth.org](https://participate.mqmentalhealth.org/).
There are three studies on autism that you can volunteer to participate in, but also research projects on anxiety, depression, and many other aspects of mental health if you're interested in taking part.

## Thank you!

We are grateful to you all for your continuing help and support to work towards more enabling environments, and more inclusive research, for autistic people and their families.

All the best,

Kirstie and Georgia

00-project-documentation/communication/newsletters/newsletter-20190920.md METASEP
# Newsletter | September 2019

*Date sent: 20 September 2019*

Subject: September updates from the Autistica/Turing Citizen Science project

Hello,

This is the September 2019 newsletter for the Autistica/Turing Citizen Science project.

### Thank you for your feedback

We've had some excellent, really useful feedback after our first newsletter.
Thank you everyone!

Some of you told us that there was too much information in the last newsletter, and that the text was not broken up enough, so we've changed how this one is written.
We hope it's a little easier to follow!

### Project website

Some of the feedback said that the GitHub repository was confusing.
There were too many additional pieces of information on the page that made it difficult to focus on what we were saying!

So we've **made a website for the project**: [https://alan-turing-institute.github.io/AutisticaCitizenScience](https://alan-turing-institute.github.io/AutisticaCitizenScience).
It has a lot of the same information as the GitHub repository, but is hopefully easier to read.

Please check it out and let us know what you think.

### Telling us what you think

We really appreciate your comments about what the priorities for the project should be and what the barriers to participation are at the moment.

The best way to share your feedback and suggestions with us is to **fill in our online survey**: [https://bit.ly/AutisticaTuringCitSciForm](https://bit.ly/AutisticaTuringCitSciForm).

The main question on the form is quite vague because it is designed to capture a broad range of comments.
We know that can be frustrating and we're working on making the contribution process easier based on your feedback.

The reason we like capturing your suggestions there is that they become openly available for all the team members building the citizen science platform.
If you find the form confusing or don't want to have your suggestion (without your name) publicly available, you can also **email Georgia** at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

### Upcoming activities

We are running three focus groups in the next few weeks with members of Autistica's [Insight Group](https://www.autistica.org.uk/get-involved/calmer-christmas/help-shape-research).
These are in partnership with Fujitsu who [voted to make Autistica their Charity Partner](https://www.fujitsu.com/uk/about/local/corporate-responsibility/charity-partner/) earlier this year.

At the focus groups we will demonstrate a very, very early stage [demonstration of the citizen science platform](https://autistica-demo-deployment.herokuapp.com).
We will work with the teams at [Open Humans](https://autistica-demo-deployment.herokuapp.com/) and Fujitsu to improve this over the next few weeks.
Stay tuned for a more accessible example in October's newsletter.

### Thank you!

We really appreciate you joining us in helping to build a more inclusive world for autistic people who have sensory processing sensitivities and differences.

All the best,

Kirstie and Georgia

00-project-documentation/communication/newsletters/newsletter-20190805.md METASEP
# Newsletter | August 2019

*Date sent: 5 August 2019*

Hello,

Welcome, and thank you for your interest in the Autistica/Turing Citizen Science Project.
We have some exciting news!
We now have ethics approval for the project, which means that we can start co-designing the platform with your input and feedback.
Thank you so much to everyone who has contributed so far!
We are in the process of developing ways of collaborating, and we are still at the very beginnings of the design stage, so any input on how we can make it easier for you to be involved, or about the project more generally, would be really helpful.

### Project Overview

The goal is to investigate how sensory processing differences affect the ways autistic people navigate the world around them.
Autistic people, as well as their relatives and carers, will be involved as collaborators from the start, and the project will be in the service of longer, healthier, happier lives for autistic people.

How sensory processing affects navigating different environments is an area which is still not well understood, but which we know can have a huge impact on people’s lives.
It was chosen as a priority for autism research in collaboration with members of the autistic community.
Investigating this area will increase people’s understanding of autism and daily life, connect people with others who share similar experiences, and help provide evidence to conduct more research and modify environments so that they are better suited to autistic people.

In order to investigate the topic, we will co-design a citizen science platform in collaboration with autistic people, their relatives, carers, and allies, where people who are not professional scientists can enter their experiences about navigating the world around them.
This will include making sure people have control over how their data is used, who it is shared with, and for what purposes.

The first stage is to co-design the platform.

We are now ready to begin co-designing the platform!
This is the phase before the platform is publicly launched.
Only then can it be used to collect data on sensory processing and environments.
We expect the platform to be publicly launched in Spring 2020.

You can get involved now to decide what kind of a platform gets made, and how it gets made.

### How to get Involved

There are many ways to get involved with the Autistica/Turing Citizen Science project team.
Please start by reading the participant information sheet which contains important information on who can be involved, and what to expect from involvement.

* You can anonymously, publicly share your suggestions via the "always open" google form: https://bit.ly/AutisticaTuringCitSciForm.
This form is deliberately quite open, so that there is lots of freedom for you to tell us about your thoughts about the project and the platform.
We will use the response to the survey to better design the platform as well as to better manage and run the project itself.
* Visit us at our GitHub repository.
GitHub is a site where we will be able to build the platform publicly online, and where volunteers can contribute.
A ‘repository’ is the online space where all the documents and files relating to the project are stored and managed on GitHub.
You are welcome to use this site to raise issues about the project or comment on the project documentation, which we have uploaded there.
If you are a coder or developer, you will also be able to contribute code via. GitHub.
* Join the discussion in our issues and pull requests on GitHub
For more instructions, checkout our contributing guidelines
* Come and say hello in our gitter channel.
This is a public messaging channel where you can interact with the research team and other commenters.
* You can contact research associate Georgia Aitkenhead by email at gaitkenhead@turing.ac.uk.

Thank you to everyone who has already helped with the project so far! To all new subscribers, we're excited to have you on board.

Very best wishes,

Kirstie and Georgia

00-project-documentation/communication/newsletters/newsletter-2003-01.md METASEP
January Newsletter 2023
=======================

Happy 2023! We hope you're all having a wonderful start to the year!  It's been a busy January for AutSPACEs, with lots of progress made on the platform and a great first meet-up session with a lot of community members attending to share our work with and discuss next steps. We'd love to invite you to the next meet-up!

Date: Thursday 2nd February

Time: 12:00-13:30  

Location     

   Online via. Zoom: [https://turing-uk.zoom.us/j/92231923469?pwd=TXFCNFZISzJjajFoaUpIOG1MTURKdz09](https://turing-uk.zoom.us/j/92231923469?pwd=TXFCNFZISzJjajFoaUpIOG1MTURKdz09)

Join us for an exciting agenda including a run-through of the platform and upcoming opportunities. Email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involved or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us. They can sign up by following this link: [https://tinyletter.com/AutisticaTuringCitizenScience](https://tinyletter.com/AutisticaTuringCitizenScience).

Best wishes for everyone!

Project News
------------

### AI UK 2023

AutSPACEs has been selected to be presented for the [AI UK 2023 showcase](https://ai-uk.turing.ac.uk/). The event will take place on March 21/22 at the Queen Elizabeth II Centre in London, and will include keynotes, lightning talks, workshop area and an exciting exhibition. 

AutSPACEs will be part of the exhibition space and feature interactive experiences as well as a platform demo. During our February meetup session we will be discussing and planning our exhibit space. We also have a limited number of tickets to give to community members. If you are interested to help or attend, please email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know, with a few sentences on what you hope to gain from the event. 

### Podcast

Susanna, Georgia, and Bastian were interviewed about AutSPACEs for the [Sustain Open Source Design](https://sosdesign.sustainoss.org/) [Podcast](https://sosdesign.sustainoss.org/)! The podcast episode is set to go live on Tuesday 24th January.

### Upcoming Seminar

Otis, Helen, Georgia, and Bastian will be sharing our work on AutSPACEs for an online seminar on **'Public Space, Play, and Neurodiversity"**. The seminar will take place online on **Thursday 24 January 2023 at 10am**. There will be a range of excting research projects shared and time for Q&A. All of you are invited! You can [register for the seminar online](https://symposium.uoc.edu/93279/detail/international-online-seminar\-lpublic-space-play-and-neurodiversityr.html). Please register by 9:30am to join. 

### Platform

Callum and Helen have made amazing progress developing the autism platform, and we'd love to show you there work in the next meet-up!

You can also see design work as well as steps taken to create the design in [the platform design folder of our GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience/blob/master/platform-designs/wireframes/platform-prototype-21-02-2022.md). We are also working on the platform development through issues and pull requests on GitHub. If you're interested in helping develop the platform or giving feedback please [check out our issues on GitHub](github.com/alan-turing-institute/autSPACEs/issues).

We'll also soon be looking to gather feedback from the AutSPACEs community on the platform via. user testing sessions. If you are interested in being involved in this, please email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know.

### Moderation

Susanna, James, Bastian and Georgia are currently turning the work on moderation into an academic paper to share the insights from the AutSPACEs community and our solutions and strategies with other researchers. We are also always eager for feedback on our code of conduct and moderation processes. If you are interested in being involved in this, please email [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know.

### Software Sustainability Institute

Georgia has been selected as a [Software Sustainability Institute](https://www.software.ac.uk/) fellow for 2023, with a focus on neurodiversity and community. If you have any priorities or ideas you would like Georgia to bring to the SSI, please email [Georgia](mailto:gaitkenhead@turing.ac.uk).

Get involved
------------

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas. It is really important we hear the voices and perspective of all of our community members.

Last year, we identified the following areas where we need your help:

*   Communication, Engagement and Promotion
*   Platform development
*   Accessibility and Inclusion
*   Moderation

We'll talk again about the different areas and routes to involvement in our meet-up session on the 2nd February, so please do join in so we can **make AutSPACEs work for you**.

If you want to get stuck in ASAP and know how to use GitHub, you can visit our main repository: [https://github.com/alan-turing-institute/AutSPACEs](https://github.com/alan-turing-institute/AutSPACEs) If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and we welcome anyone to contribute and get involved. We also invite you to take part (or start up) discussions on GitHub. You can do this by going to the repository and clicking on the "discussion" tab, where you can share your views:

[https://github.com/alan-turing-institute/AutSPACEs/discussions](https://github.com/alan-turing-institute/AutSPACEs/discussions)

If you're not too sure about GitHub but would like to know more, _The Turing Way Book_ has a whole section on how to get started for successful collaboration and involvement. I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility! Follow this link on Getting Started with GitHub: https://the-turing-way.netlify.app/collaboration/github-novice.html

### Connect with us

*   [About the project](https://alan-turing-institute.github.io/AutisticaCitizenScience/)
*   [GitHub repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)
*   [Github repository](https://github.com/alan-turing-institute/AutSPACEs)
*   [Join us on Slack](https://slackin.openhumans.org/)
*   [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also welcome to email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) and we will support you to be involved or answer any questions you might have.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions. You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Sophia, Bastian

00-project-documentation/communication/newsletters/README.md METASEP
## Subscribe to the mailing list

📫 You can subscribe to receive the project newsletter by email at [https://tinyletter.com/AutisticaTuringCitizenScience](https://tinyletter.com/AutisticaTuringCitizenScience).

✉️ You can see all the archives of the newsletter at [https://tinyletter.com/AutisticaTuringCitizenScience/archive](https://tinyletter.com/AutisticaTuringCitizenScience/archive).

You can find a template for making a newsletter at [00-TEMPLATE-NEWSLETTER.md](00-TEMPLATE-NEWSLETTER.md).

## Formatting the newsletter

*This information is for members of the project team who have write access to the TinyLetter mailing list.*

Rather than formatting the newsletter in the TinyLetter page, please use this markdown to html converter tool: [https://www.browserling.com/tools/markdown-to-html](https://www.browserling.com/tools/markdown-to-html).

Combining free text and markdown can introduce strange layout changes (really large fonts and odd spacings) that are not easy to spot until you've sent the newsletter.
You are more likely to successfully send a nicely formatted newsletter by converting markdown to raw html and entering that into TinyLetter dashboard.

00-project-documentation/communication/newsletters/00-TEMPLATE-NEWSLETTER.md METASEP
# MONTH Newsletter YEAR

Hi everyone! Seasons greetings! Hope you've been enjoying the snow (if you're UK-based) and it's not caused too many problems for you! It's been a while since our last newsletter because we were on pause while our new team started and while Kirstie was on maternity leave. We'll be starting up regular newsletters and meet-up sessions again in January 2023, and we've got lots we're excited to share with you and to show you. So we wanted to send you lots of festive good cheer before the winter break and invite you to our first meet-up session of 2023:


| Date | Time | Location |
| -------- | -------- | -------- |
| DAY DATE MONTH | TIME | Online via. Zoom: https://turing-uk.zoom.us/j/92231923469?pwd=TXFCNFZISzJjajFoaUpIOG1MTURKdz09 |


INTRO TEXT FOR MEETUP

Email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) to let us know if you want to get involveed or don't know where to start, and feel free to share this newsletter to anyone who you think would be interested in joining us.
They can sign up by following this link: https://tinyletter.com/AutisticaTuringCitizenScience.

## Project News


### TOPIC
TEXT

### TOPIC
TEXT

### Presentations

We've been working hard to advocate for open and participatory research practices and share our view of the importance of research by and for the people for whom there is most at stake. Here's a selection of some of the talks we've given:

* link
* link

## MONTH Contributor Spotlight - PERSON NAME

Today we are spotlighting…

### Tell us a little about yourself...

### What are your favourite hobbies/things to do?

### What have you been working on for the AutSPACEs project?

### Give your best tips and tricks for contributing:

## Get involved

Our project consists of many different areas where we would love people to contribute and give us their thoughts and ideas.
It is really important we hear the voices and perspective of all of our community members.

Last year, we identified the following areas where we need your help:

* Communication, Engagement and Promotion
* Platform development
* Accessibility and Inclusion
* Moderation

We'll talk again about the different areas and routes to involvement in our meet-up session on the 12th January, so please do join in so we can **make AutSPACEs work for you**.

If you want to get stuck in ASAP and know how to use GitHub, you can visit our main repository: https://github.com/alan-turing-institute/AutSPACEs
If you look at the issues list in each of these, you can see a list of tasks that need to be completed, and we welcome anyone to contribute and get involved. We also invite you to take part (or start up) discussions on GitHub. You can do this by going to the repository and clicking on the "discussion" tab, where you can share your views:

https://github.com/alan-turing-institute/AutSPACEs/discussions

If you're not too sure about GitHub but would like to know more, _The Turing Way Book_ has a whole section on how to get started for successful collaboration and involvement.
I highly recommend this book also for anyone who is interested in Open Source Research and Reproducibility!

### Connect with us

* [About the project](https://github.com/alan-turing-institute/AutSPACEs)
* [Github repository](https://github.com/alan-turing-institute/AutSPACEs)
* [Join us on Slack](https://slackin.openhumans.org/)
* [Follow us on Twitter](https://twitter.com/AutSpaces)

You are also welcome to email [Sophia](mailto:sbatchelor@turing.ac.uk) or [Georgia](mailto:gaitkenhead@turing.ac.uk) and we will support you to be involved or answer any questions you might have.

A huge thank you is due to everyone in the community for all of your ongoing efforts and wonderful contributions.
You are making a big difference in creating research which can benefit autistic people and their families.

Very best wishes,

Georgia, Sophia, and Bastian

00-project-documentation/communication/applications/cc-global-summit-2021.md METASEP
# CC global summit Application

## Deadline

Jul 7 at 4:00am In your local timezone (GMT +1)

## Name
  Georgia Aitkenhead


## Primary Presenter Organization Affiliation (if applicable)
    
The Alan Turing Institute

## Do you have additional presenters?

Yes

## Primary presenter world region

Africa
Arab World
Asia-Pacific
**Europe**
Latin America
North America

## Primary presenter country of residence
    
UK

## Your Local Time Zone

Asia-Pacific UTC+12 to UTC +7
East Africa, Eastern Europe, Middle East, Western Asia UTC+6 to UTC+3
**[West Africa, Western Europe UTC +2 to UTC -2](https://hackmd.io/-PQDWR0JT8aJo_D3tx0XXQ)**
Latin America, North America East UTC-3 to UTC-5
North America Central/West UTC-6 to UTC-11

## Language of Presentation

English

## Proposed title for your presentation

AutSPACEs: co-creating an open citizen science platform

## Abstract

We are a community of citizen/professional scientists and open-source developers building a citizen science platform to investigate sensory processing and autism. The data gathered will be used to make environments such as hospitals and schools more enabling for autistic people. We follow best practices for open-source research adapted by and for neurodiverse people. The platform is open and can be modified for other research, and we are developing a participatory framework which can guide other research. In this session we present the platform/research findings and invite collaborators.

## Diversity

This session focusses on empowering a neurodiverse community. We explore intersectional effects of autism and systemic barriers. Despite educational attainment and ability, autistic people are excluded from positions of power: just 22% of autistic people in the UK are employed, for instance. Practising the principles of participatory science we advocate, this session is run by an autistic citizen scientist, a professional researcher, and an open-source developer. Our diversity in terms of gender, sexual-orientation, neurodiversity, citizenship, and ethnicity is a key strength of our community

## Outcomes

1)Sharing a case study of open, participatory research in practice, and the importance of openly licensedd research 2)Presenting FAIR principles for open licensinig in the context of sensitive data 3)Raising awareness of challenges faced by neurodiverse people, and some mitigating strategies 3)Providing an opportunity to be involved in world-class research and gain experience of an open-source, open-licensed project 4)Openly licensed tools and materials to support future research. We also hope to engage with people who have influence to use new our data to make environments more accessible. 

## Full Description

This session shares progress from a pioneering, community-led research project: AutSPACEs. AutSPACEs is a collaboration between The Alan Turing Institute, the UK’s national institute for AI and data science, and Autistica, a UK-based autism research charity. We are a neurodiverse community of citizen/professional scientists and open-source developers. building a citizen science platform to investigate sensory processing and autism.

Sensory processing differences affect up to 90% of autistic people, yet the impact this has on the daily lives of individuals is not well-known. Understanding the conditions which make environments better suited to autistic people with sensory differences requires rich, nuanced data. To gather this, we are developing an online platform designed by and for autistic people. The dataset can be used to adapt environments such as schools, hospitals, and workplaces to be more enabling for autistic people. Our research method is unique in combining open-source development, citizen science, and participatory research to empower autistic people throughout the research process.

The project is autism-voice first but is open to all. The data we gather, all code, protocols, working notes, project plans, research outputs, and tasks are openly published on our GitHub repositories, along with accompanying documentation and multiple routes to involvement. While AutSPACEs seeks to address a specific research question, it has much broader implications. The project outputs will be an open, citizen science platform which can be easily adapted to answer other research questions, along with a participatory framework for open research which can be used for other projects. We are already exploring applications for investigating co-occurring conditions.

AutSPACEs follows best practices for open-source research and development adapted by and for neurodiverse populations. In this interactive session, we will firstly present AutSPACEs, giving a brief overview of the research context and raison d’être of the project. We will detail our approach and methods of working openly, including how we follow FAIR principles of data use. We will then demonstrate the platform prototype and share a variety of routes to involvement. All attendees are warmly invited to contribute or join future community meet-up sessions to learn more. We will also invite audience members to consider neurodiversity in their own practices and offer tools to support increasing engagement. We hope to use this opportunity to connect with activists, researchers, community-managers, and members of the creative commons community who can benefit from the tools and practices being openly developed for AutSPACEs. We hope to engage with policymakers, community managers, and those in positions of influence who can use data on sensory processing differences and the barriers autistic people face to make spaces more accessible for autistic people, and share how vital open licenses are. 

## Would you be willing to combine your session with another presenter with a similar idea?

**Yes**

## What type of proposal are you submitting?

**General Program Proposals- includes panels, workshops, discussions, sprints**
Arts Proposals - includes multimedia works, video, photography, music, performing art
Hack4OpenGLAM Workshop Leader - to lead a workshop on hacking datasets in Open GLAM

## Session Format

Presentation/panel (5 presenters maximum)
Lightning talk (5 mins)
Interactive session, discussion or workshop
Sprint/hackathon (incorporating a workshop and asynchronous task)
Pre-recorded video

## How much time do you prefer for your session?

5 mins - for lighting talks and pre-recorded video presentations
**20-30 mins**
60-90 mins
2-3 hours

00-project-documentation/communication/applications/autistica-festival-2022.md METASEP
# Autistica Festival Application

#### Your name
Georgia Aitkenhead

#### Your job title
Research Associate

#### Your university or organisation
The Alan Turing Institute

#### Your research interests
Autism and empowerment, open science, participatory science, citizen science, neurodiversity, diversity and inclusion in research. 

#### The names of any additional presenters, authors or collaborators (optional)
Kirstie Whitaker, Sophia Batchelor, Soledad Li, Robin Taylor, Susanna Fantoni, James Scott, Otis Smith

#### What is the title of your presentation or project?
"Presenting AutSPACEs: sensory processing research by and for autistic people"

#### Please state the ethics committee(s) this study has been approved by, as well as the ethics committee ID used to identify your study
The University of Cambridge, PRE 2019.021

#### Please state the project's start and end dates
December 2018- December 2023

#### Please provide an academic abstract that details your intended presentation (300 words)
AutSPACEs is a collaborative, citizen science research project investigating sensory processing differences between autistic people and the non-autistic population, with the aim of understanding how this affects the daily lives of autistic people. 

The research centres around a web-based platform that has been co-created by an autistic community, in collaboration with The Alan Turing Institute and Austistica. As a large majority of previous research on sensory processing and autism has not genuinely empowered autistic people throughout the research process, the AutSPACEs platform instead embeds the lived experience of autistic people in the heart of the project.

The presentation session will demonstrate the platform's functionality, and talk through the purpose, design, and management of the AutSPACEs project. By design, this project follows Open Science principles within a "Participatory Science" framework. The presentation, and project itself, aims to demonstrate how research is better served by the active inclusion of autistic communities so that it may better represent the priorities, needs, and concerns of autistic individuals.

This makes the 2022 Autistica Festival the perfect place to showcase the AutSPACEs platform, and give attendees the opportunity to provide feedback and be further involved in the project, so that it represents their priorities, meets their needs, and addresses their concerns.

With this presentation we hope to showcase a new resource for autistic people, advocate for the importance of autistic inclusion in research to other autism researchers, and provide an opportunity for autistic attendees to be part of an exciting research project.

#### Lay person abstract co-working (300 words)
Approximately 90% of autistic people experience everyday sensory information (sound, smell, sight, and touch) differently than non-autistic people. Lights may seem brighter, sounds louder, and daily spaces such as schools, hospitals, and public transport can become overwhelming. However, it is not well understood what causes these differences, or what can be implemented at a society-wide level to make the world easier to experience for autistic people. 

The AutSPACEs project is building a platform where autistic people can share stories, strategies, and recommendations with other autistic people and researchers. The aim is for the platform to inform policy changes that will make public spaces more accessible. We are building this as a community of researchers, developers, autistic people and supporters. Autistic people in this project are not just research subjects, they are co-creators, decision makers, and leaders. AutSPACEs is built by, and for, autistic people.


We will present how the platform works, how to use it, and then talk through the purpose, design, and management of the AutSPACEs project. The project shares our work publically so that it can be of benefit to more people, and we welcome anyone into our community, as long as they follow our values. We emphasize values of "openess" and "participation" to create a supportive community that builds the AutSPACEs project in a way that protects and respects autistic people. 

This makes the 2022 Autistica Festival the perfect place to showcase the AutSPACEs platform, and gives members the opportunity to give feedback and to be involved in the project, so that it represents your priorities, meets your needs, and addresses your concerns. We will showcase a new resource for autistic people, advocate for the importance of autistic inclusion in research, and provide an opportunity for autistic people to be part of an exciting project.

### Please provide a statement on how your research contributes to autistic people living happier, healthier, longer lives
We envision AutSPACEs contributing positively to autistic people lives in multiple ways. The platform will give autistic people a safe, inclusive space to share ideas and strategies, it will educate non-autistic people about autistic people’s lived experience and thereby reduce stigma and misunderstandings, and it will inform changes to public spaces and protocols for the management of those spaces so that they are more suitable for a diverse range of autistic people. The research process has meticulously centred autistic people and their priorities, and we will share and advocate for more empowering research by creating frameworks and disseminating findings. Our open science approach means that the resources we create, including code, research protocols, moderation guidelines and design systems will be available for other researchers meaning we can have impact beyond a single study. Finally, we have extensive testimony from autistic participants that they have found their involvement in AutSPACEs empowering. 

00-project-documentation/communication/applications/autistica-2021-abstract.md METASEP
# Autistica Research Festival 2021 - abstract proposal

*This is an abstract submitted for the Autistica 2021 research festival by Susanna Fantoni, Georgia Aitkenhead, and James Scott.* 

We will present new research concerning a unique, co-created moderation process for a participatory citizen-science platform: AutSPACEs. 
AutSPACEs is a research platform being designed by and for autistic people and their allies, to share their experiences of sensory processing in their daily lives. 
The data collected can then be gathered to modify environments so that they are better suited to autistic people.

Crucial to the success of the platform is an effective moderation process that allows autistic people to feel safe but not censored, heard but not misheard, and welcomed as individuals as part of a community. 
It is vital that a diverse group of neurodivergent people are both enabled and protected. 
Rather than a top-down approach where rules created by moderators are imposed on users, we demonstrate a participatory co-creative process in which all members are invited to take part in designing and maintaining a moderation process for autistic people in particular.


The talk will be given by a non-autistic researcher and two autistic participant researchers. 
We will begin by briefly setting the context and describing the co-creation process, as well as highlighting some of the complexities and themes emerging. 
We will go on to discuss challenges, risks, and mitigation strategies identified. 
We will then consider the implications of allowing non-autistic people to speak for autistic people in special cases. 
Finally, we will invite attendees to participate in creating the moderation process themselves.

00-project-documentation/communication/applications/RRI_application.md METASEP
# Responsible Research and Innovation: Application

## Your statement of motivation

### Why are you applying and what do you hope to gain from the course?

I am a researcher at The Turing working on the participatory co-design of a citizen science platform, AutSPACEs, which will be used to investigate how sensory processing differences impact autistic people in their daily lives. 
Conducting this research responsibly and with high ethical standards is of paramount importance, and the aspiration is to develop responsible, participatory tools and methods which can further benefit other research projects. 
By continuing to develop and broaden skills and understanding in ethical research practices, I can bring additional skills, knowledge and ideas to enhance the AutSPACEs project. 
The RRI course provides breadth and depth of training across a number of dimensions highly relevant to my current work. 

Further, I would like to contribute to, and learn from, a community with shared values across a range of backgrounds and fields of expertise. 
I believe that such a community is likely to be mutually supportive, and provide fertile grounds for collaboration, peer support, and encouragement. 
I am committed to ethical research, and the training will support foundations of ethical principles and practice to guide my academic career going forwards by providing opportunities for both learning and for making connections. 

By offering a broad curriculum and giving access to diverse perspectives, I also hope the training will help me to better understand how learning from AutSPACEs can be applied to a broad range of cases, and how I can build expansiveness and reusability for this project, and my research more generally. 


### What is your experience with Responsible Research Innovation? Note having previous experience is not a requirement.

Responsible research and innovation is core to my current work, which has the development of participatory methodologies as a key focus. 
I have particular knowledge about RRI in the field of autism, as well as in citizen science. 
Much of my research involves thinking about and managing responsible engagement throughout the research cycle, as well as considering how power dynamics impact the production and dissemination of knowledge, and the ethical implications of how science is socially and structurally embedded. 
I am a member of the participatory science special interest group at The Turing, and I also have experience of RRI through involvement with The Turing Way community. 
Prior to the Turing I have experience of RRI via. behavioural insights research, and supporting digital transformation strategies, for the UK government. 

I do not have experience with AI research or engineering, other than tangentially, so I am eager to learn from the modules on responsible model development and system development, and to engage in discussions with people who have more of a technical background/specialisms in AI and software development. 

00-project-documentation/communication/applications/PGSAUT-abstract.md METASEP
# Abstract for The PGSA@UT Philosophy Conference

### Abstract for submission to The [Philosophy Graduate Student Association at The University of Tennessee Philosophy Conference](http://utkphilgradconference.weebly.com/) March 13-14 2021

## Hacking's Human Kinds and the Ethics of Participatory Science 

Drawing on Hacking’s ([1996](https://oxford.universitypressscholarship.com/view/10.1093/acprof:oso/9780198524021.001.0001/acprof-9780198524021-chapter-12)) influential concept of the ‘looping effects of human kinds’, this paper will explore the ethical implications of the dynamics between researchers and research subjects in scientific practice. 
We argue that scientists engaged in work about human kinds have a moral duty to include research subjects in their work. 
We will then ground the theoretical discussion with a case study of participatory science in action: a project to build a tool to investigate autism and sensory processing through the participatory co-creation of a citizen science platform. 
This project is a collaboration between the UK-based research charity Autistica and The Alan Turing Institute, the UK’s national institute for AI and data science. 
More detail, current work, outputs, resources and engagement pathways are all available on the [project’s repository](https://github.com/alan-turing-institute/AutisticaCitizenScience).

The presentation of this paper will itself follow participatory practices: it will be co-presented by an autistic participant, point attendees to open and transparent research protocols and data, and everyone will be invited to join as collaborators.

We begin by exploring how existing scientific practices base themselves on a division between researchers and research subjects. 
To do so, we explore Hacking’s account of human kinds and provide the example of autism. 
We briefly review recent trends in the study of autism and argue that the gap traditionally conceived between “knowers” and those who are “known” raises ethical concerns.

The ethical concerns we discuss are similar to those of feminist scholars at large and standpoint theorists in particular. 
We will consider what Miranda Fricker ([2007](https://oxford.universitypressscholarship.com/view/10.1093/acprof:oso/9780198237907.001.0001/acprof-9780198237907)) calls “epistemic injustice”. 
By Fricker’s account, prejudice about certain stereotypes render their testimony noncredible. 
When these stereotypes are incorrect, an epistemic injustice is produced. 
This is because social injustices are perpetuated through incorrectly assigned stereotypes. Despite the research subject being the expert of their own experience, research findings are afforded validity by scientific institutions and authority by society. 
This results in social policies and norms that further reproduce social injustices. Such divisions are further entrenched by societal inequality which can create barriers to scientific institutions and education.

Fletcher-Watson et. al., (2019) further emphasise the cruciality of interrogating and redressing power disbalance. Power asymmetry is associated with significant adverse effects for those disempowered. On an individual level, power asymmetry can lower self-esteem (Wojciszke & Struzynska–Kujalowicz, 2007), reduce a sense of agency (Martin et al., 2003), and lead to reduced empathy in those wielding power, who can pathologize difference as dysfunction (Galinsky, Magee, Inesi, & Gruenfeld, 2006). 

Having problematised the division between “knowers” and “known”, we return to Hacking’s looping effects to argue that, given the self-reflecting nature of human kinds, scientists ought to integrate this into their practice. 
In other words, given that researchers, in “knowing” about the social world, shape the very subject they study, they should fix the ethical principles guiding their research from the start. 
To both fix these ethical principles and study human kinds, we suggest that bringing research subjects into the research process presents an ethically compelling means of conducting science that is pertinent to human kinds.

Thus, we explore tools available in participatory science and that show promise in redressing the key concerns laid out. 
We will examine the effects of including research subjects in the critical aspects of research, such as priority-setting, data gathering, the creation of protocols, analysis, and the interpretation and communication of findings. 
We argue that there are benefits both for the research itself and those who take part in it. We also suggest that participatory research is a means of supporting the inclusion and empowerment of traditionally marginalised groups in science. 

We make this case by referencing autism in particular and drawing on existing participatory frameworks as well as new findings emerging from co-creation sessions with autistic people. 
We use a current, ongoing participatory project as a case study to ground the discussion. 
It aims to co-create an online citizen science platform enabling autistic people to share their experiences of sensory processing in their daily lives. 
Possible means of engagement and routes to involvement of diverse participants will be explored. 
We will share learning from the citizen science project and offer practical guidance for those interested in incorporating participatory practices in their own research. 
We will point to challenges and limitations of participatory science in relation to each of the tools discussed as well as more generally. 
Finally, we will demonstrate means of involvement in the project, and warmly encourage collaboration. 

## References

* Fletcher-Watson, S., Adams, J., Brook, K., Charman, T., Crane, L., Cusack, J., … Pellicano, E. (2019). Making the future together: Shaping autism research through meaningful participation. Autism, 23(4), 943–953. https://doi.org/10.1177/1362361318786721
* Fricker, M. (2007-06-01). Epistemic Injustice: Power and the Ethics of Knowing. : Oxford University Press.
* Galinsky, A. D., Magee, J. C., Inesi, M. E., & Gruenfeld, D. H. (2006). Power and Perspectives Not Taken. Psychological Science, 17(12), 1068–1074. https://doi.org/10.1111/j.1467-9280.2006.01824.x
* Hacking, I. (1996). The looping effects of human kinds. In Causal Cognition: A Multidisciplinary Debate. : Oxford University Press.
* Wojciszke, B., & Struzynska–Kujalowicz, A. (2007). Power Influences Self–Esteem. Social Cognition, 25(4), 472–494. https://doi.org/10.1521/soco.2007.25.4.472
* Martin, J., Sugarman, J., & Thompson, J. (2003). Psychology and the Question of Agency. SUNY Press.






00-project-documentation/communication/applications/MozFest2022.md METASEP
# MozFest 2022

Application to present in The Neurodiversity and Wellbeing Space
The submission can be found [here](https://pretalx.com/mozfest-2022/talk/review/P37CSA8R8ZTDQYPLWJZ8ZHUFUTZUFZQB).

## Description (250 words)
AutSPACEs is a community-led citizen science project to investigate how sensory processing differences affect the ways autistic people navigate the world. 
The platform is designed for autistic individuals and their supporters to share their experiences of the world so that the autistic community, allies, and researchers can understand the relationship between sensory processing and autism. 
This session will discuss the ways in which open source technologies can be used to support the development of a citizen science project in a way that prioritizes the wellbeing and empowerment of its neurodiverse community.

5 members of the AutSPACEs community will run a discussion session centring around diverse inclusion and empowerment. 
We will begin by giving an overview of AutSPACEs, and then we will each present on an area of the project we have been working on. 
We will then facilitate a series of discussions based on the following prompts:
  
* What is *genuine* empowerment?
* How can existing Open Source tools be used to support inclusive co-created projects?
* What considerations need to be made to ensure that Open Source projects maintain the safety, privacy, and wellbeing of neurodiverse communities? 
* How do we create a welcoming, inclusive online space for neurodiverse people?
* How can we develop infrastructure that open source platforms and their content are used in ways that the communities on the platforms would wish it to be used? 
* What needs to be done to support informed consent and data ownership within neurodiverse communities interacting in online spaces? 

## What is the goal and/or outcome of your session? (150 words)

We hope to share and learn methods and techniques of participatory research and co-design and advocate for neurodiverse inclusion and accessibility. 
We also hope to foster a productive discussion around inclusive online spaces and empowering research. 
As this session will be co-run by a diverse group of professional researchers, citizen scientists, and coders, we will model participatory practices, and demonstrate the value of working collaboratively and equitably.
We want to share how we have managed this project to be inclusive and empowering, and lessons learnt from creating an open-source project designed by, and for, autistic people. This includes sharing strategies for effective community management, and design ideas/principles for creating a safe and accessible online space, which maintains privacy and agency while being committed to open research.
We are excited to learn and grow by engaging with the ideas, knowledge, and experiences of the MozFest community.

## Why did you choose that space? How does your session align with the space description? (150 words)

Creating neurodiverse wellbeing is core to the AutSPACEs project and at the heart of our community. 
We are dedicated to improving the wellbeing of autistic people, and this is reflected in multiple dimensions of the project: empowering autistic people throughout the research process; creating an online space which is designed to be inclusive and accessible to individuals across the autistic constellation, and working towards research outputs which have a positive impact according to autistic people’s priorities.
We welcome MozFest’s dedicated space to neurodiversity. 
It is hugely exciting to have the opportunity to be part of a wider conversation about neurodiverse wellbeing, and to engage with a community hoping to change online norms to support neurodiverse people. The MozFest values of openness and collaboration, along with a shared desire to improve the wellbeing of neurodiverse people, makes this an ideal space for our session.

## How will you deal with varying numbers of participants in your session? What if 30 participants attend? What if there are 3? (150 words)

We will structure the session so that 5 members from our community (~6 minutes each) present a piece they’ve developed for the project. 
We plan to have 3 targeted discussion sections where participants engage. If there are low numbers of attendance, we can hold everyone in the same online space and support a discussion with the whole group. 
If a larger number of participants attend, we will structure “breakout groups” and have our community members supporting the discussion.
We will support accessibility for a neurodiverse group by 1) a “calm room” on Zoom where anyone can go at any time for a break from the session; 2) “type” and “talk” contribution options (with a notetaker) 3) supporting the session with a code of conduct designed to facilitate inclusive, respectful interaction. The AutSPACEs team has extensive experience facilitating neurodiverse groups, and we will tailor our support for individuals as needed.

## What happens after MozFest? We're hoping that many efforts and discussions will continue after MozFest. Share any ideas you already have for how to continue the work from your session. (150 words)

We’d be delighted to continue dialogue from the session and offer support/onboarding for those interested in joining our community or using any of our resources and techniques. 
We commit to actively supporting individuals to take part to ensure the project is accessible. 
We are excited and open to opportunities for future collaboration.
We will (with participants’ permission) take notes on an open document, which we will publish on our GitHub repository, so that the learning is openly available, can be shared with the AutSPACEs community, and can be incorporated into future research. 
The co-design of the AutSPACEs platform is ongoing, with many opportunities for collaboration throughout the research cycle. 
AutSPACEs is open to all, and attendees will be warmly invited to join further discussions via. a range of routes, including regular, public meet-up sessions. 
We are also able to support others in neurodiverse inclusion.

## Biography 

The AutSPACEs community is a neurodiverse group of professional scientists, citizen scientists, open source contributors and coders working together to create inclusive autism research. 
We are supported by The Alan Turing Institute and Autistica.
Between us, we have a whole range of skills, areas of expertise, and life experiences. 
This is a collective rather than an individual biography, because not everyone in the AutSPACEs community will be at MozFest, but we have all contributed to the work that will be shared.

static/js/main.js METASEP

static/images/ui-checks.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-ui-checks" viewBox="0 0 16 16">
  <path d="M7 2.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zM2 1a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H2zm0 8a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2a2 2 0 0 0-2-2H2zm.854-3.646a.5.5 0 0 1-.708 0l-1-1a.5.5 0 1 1 .708-.708l.646.647 1.646-1.647a.5.5 0 1 1 .708.708l-2 2zm0 8a.5.5 0 0 1-.708 0l-1-1a.5.5 0 0 1 .708-.708l.646.647 1.646-1.647a.5.5 0 0 1 .708.708l-2 2zM7 10.5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-7a.5.5 0 0 1-.5-.5v-1zm0-5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 8a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5z"/>
</svg>
static/images/share-fill.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-share-fill" viewBox="0 0 16 16">
  <path d="M11 2.5a2.5 2.5 0 1 1 .603 1.628l-6.718 3.12a2.499 2.499 0 0 1 0 1.504l6.718 3.12a2.5 2.5 0 1 1-.488.876l-6.718-3.12a2.5 2.5 0 1 1 0-3.256l6.718-3.12A2.5 2.5 0 0 1 11 2.5z"/>
</svg>
static/images/send.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-send" viewBox="0 0 16 16">
  <path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576 6.636 10.07Zm6.787-8.201L1.591 6.602l4.339 2.76 7.494-7.493Z"/>
</svg>
static/images/pie-chart-fill.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pie-chart-fill" viewBox="0 0 16 16">
  <path d="M15.985 8.5H8.207l-5.5 5.5a8 8 0 0 0 13.277-5.5zM2 13.292A8 8 0 0 1 7.5.015v7.778l-5.5 5.5zM8.5.015V7.5h7.485A8.001 8.001 0 0 0 8.5.015z"/>
</svg>
static/images/pencil-square.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-pencil-square" viewBox="0 0 16 16">
  <path d="M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z"/>
  <path fill-rule="evenodd" d="M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z"/>
</svg>
static/images/heart-fill.svg METASEP
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-heart-fill" viewBox="0 0 16 16">
  <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z"/>
</svg>
static/images/autistica.png METASEP

static/images/animation_d.jpg METASEP

static/images/animation_c.jpg METASEP

static/images/animation_b.jpg METASEP

static/images/animation_a.jpg METASEP

static/images/alanturing.png METASEP

static/css/navigation_dark.css METASEP
 /*Navigation*/
 * {
    font-family: 'Poppins', 'PT-Serif';
    font-weight: 400;
  }
 .nav-section {
   padding-top: 1%;
   background: #F1806F;
  filter: saturate(80%);

 }

  .nav-content {
    font-weight: bold;
    font-size: 1.3rem;
  }

  .nav-item {
    padding: 0 25px;
  }

  .nav-link:hover {
    color:#000 !important;
  }

static/css/main.css METASEP
/* GENERAL DECLARATIONS */

* {
    font-family: 'Poppins', 'PT-Serif';
    font-weight: 400;
  }

body {
    position: relative;
}


/* ABOUT US PAGE */

#content-bar {
 padding: 2% 0 0% 5%;
 position: fixed;
}

.content-tile {
    font-size: 2.5em;
    font-weight: bold;
}
.list-group-item-action{
  font-size: 1em;
}

.text-info {
    font-size: 2.5em;
    font-weight: bold;
  padding-bottom: 2%;
}

.platform-list-title {
  font-size: 1.5rem;
}


/* FOOTER */

#footer {
  background: #F2F2F2;
  padding: 2% 5%;
  color:#000;
}

.footer-image {
  margin-bottom: 7%;
}

.footer-text {
  text-align: left;
  padding-right: 2%;
}

.footer-text p {
  padding-top: 1%;
  line-height: 0.5;
  font-size: 16px;
}


/* NAVIGATION BAR */

.nav-section {
  padding-top: 1%;
  background: #1BB5AF;
}

 .nav-content {
   font-weight: bold;

   font-size: 1.3rem;
 }

 .nav-item {
   padding: 0 25px;
 }
 .nav-link:hover {
   color:#000 !important;
 }


 /* LANDING PAGE */
 /*Headings*/
 .big-heading {
   font-size: 5rem;
   font-weight: bold;
 }
 .section-heading {
   font-size: 3rem;
   font-weight: bold;
 }
 .value-heading {
   font-size: 2rem;
   line-height: 2;
   font-weight: bold;
   padding-bottom: 3%;
 }
 .experience-heading {
   font-size: 2rem;
   line-height: 2;
   font-weight: bold;
 }
 .usage-heading {
   font-size: 2rem;
   line-height: 1.5;
   font-weight: bold;
   text-align: center;
 }

 /*Introduction Section*/
 .intro {
   padding: 2% 5% 3%;
      background: #1BB5AF;
   color: #fff;
 }

 .title-text {
   font-size: 2rem;
   line-height: 2;
   font-weight: bold;
   padding-bottom: 3%;
 }
 .title-image {
   padding-top: 2%;
   width: 75%;
   margin-left: 25%;
   border-radius: 5%;
 }


 /*Value Section*/
 #value {
   padding: 4% 5%;
   color: #309FDC;
 }
 .value-text {
   line-height: 2;
   font-size: 20px;
 }
 .value-box {
   text-align: center;
   padding: 1%;
 }

 /*What Autism is Section*/
 #autism {
   padding: 3% 5%;
   color: #309FDC;
 }
 .autism-text {
   line-height: 2;
 }

 /*Shared Experience Section*/
 #experience {
   padding:  4% 5%;
   color: #309FDC;
 }
 .experience-content {
   color: #8f8f8f;
   line-height: 1.5;
   font-size: 20px;
 }
 .experience-image {
   width: 50%;
   padding-top: 2%;
   padding-right: 5%;
   padding-left: 6%;
 }

 .carousel-item {
   padding: 5% 5%;
   height: 500px;
 }

 .carousel-control-next,
 .carousel-control-prev {
   filter: invert(100%);
   width: 5%
 }
 .carousel-control-prev-icon {
   position: relative;
   bottom: 20px;
   left: 0px;
}

 .carousel-indicators {
   filter: invert(100%);
 }

 /*How to Use the Platform Section*/
 #platform_usage {
   background: #F1806F;
   padding: 4% 5%;
   color: #ffffff;
 }
 .platform-title  {
   padding-bottom: 5%;
 }


 .platform-left-border {
   margin-left: 8%;
 }
.usage-icon{
  color: #fff;
}
 .platform-button {
   margin-top: 5%;
  }
 /*CTA Section*/
 #cta {
   background: #F9BB33;
   padding: 4% 5%;
   color: #fff;
 }

 .cta-card {
   padding: 3% 2%;
   text-align: center;
   font-size: 18px;
   line-height: 1.5;
 }

 .cta-header, .card-text {
   color: #000;
 }

 /*Responsive Design*/
 @media (max-width: 992px) {

   .big-heading {
     text-align: center;
   }
   .title-image {
     margin-left: 0;
   }

   #value {
     padding: 2% 0;
   }

   .value-box {
     padding: 2%;
   }

   .value-box p {
     font-size: 1.5rem;
   }
 }


/*MY STORIES PAGE*/

.story-container {
  padding: 3% 5%;
  background-color: #F9BB33;
  color: #fff;
}

.intro-text {
  font-size: 1.5rem;
  line-height: 2;
  font-weight: bold;
}

.story-head {
  color: #fff;
  text-align: center !important;
}

.list-item {
  line-height: 2;
}

.process {
  background-color: #309FDC !important;
}

.submitted {
  background-color: #F1806F !important;
}

.messages {
  background-color: #1BB5AF !important;
}

.story-dashboard {
  padding: 3% 5%;
}

.dashboard-heading {
  font-size: 3rem;
  font-weight: bold;
}

.story-table-container {
  padding: 3% 3%;
  margin-bottom: 3%;
}


.contact-btn {
  padding: 3% 0;
  margin-right: 2%;
}

.number-th {
  width: 5%;
}

.title-th {
  width: 40% !important;
}

.contributor-th, .submission-date-th, .moderation-date-th {
  width: 15%;
}

.view-btn {
  margin-top: 6%;
  margin-bottom: 2%;
}

.status-th {
  width: 30%
}

.mystory-ul {
  padding-left: 20px;
}

.mystory-table {
  margin: 0 2%;
}


/*PUBLIC EXPERIENCES INDEX*/


.experience-intro {
  background: #309FDC;
  padding: 3% 5% 3%;
  color: #fff;
}

.story-header {
  color: #F1806F;
  font-size: 2rem;
  line-height: 2;
  font-weight: bold;
}

.search {
  padding: 3% 0%;
}


.story-card-title {
  color: #F1806F;
  line-height: 2;
  padding: 0 2%;
}

.story-card-text {
  color: #000000;
  line-height: 2;
  padding: 0 2%;
}

.story-text {
  padding: 2% 11% 3%;
    text-align: cetner;
}

.story {
  padding: 2% 3%;
  color: #309FDC;
}


.non-triggering-label{
  font-size: 1rem;
      font-weight: bold;
}

/* SHARE STORY PAGE */

.story-section {
  padding: 3% 5%;
}

.form-group {
  padding: 1% 0;
}

  .read-before-container {
    padding-top: 2%;
    padding-left: 0px !important;
    padding-right: 0px !important;
  }

.coc-btn {
  margin-bottom: 3%;
}

/* SHARING CONFIRMATION */

.what-now-section {
  background-color: #309FDC;
}

.what-now-text {
  padding: 2% 5%;
  line-height: 1.5;
  font-size: 18px;
  color: #fff;
}

.confirmation-container {
  padding: 3% 5% 1% 5%;
}

.to-do-container {
  padding: 3% 5% 1% 5%;
}

.to-do-heading {
  font-size: 3rem;
  font-weight: bold;
  color: #1BB5AF;
}

.confirmation-title-text {
  font-size: 1.5rem;
  font-weight: bold;
  padding-bottom: 1%;
  color: #F9BB33;
}

.title-text-yellow {
  color: #F9BB33;
}

.confirmation-section-heading {
  font-size: 3rem;
  font-weight: bold;
  padding: 2% 5% 0% 5%;
  color: #fff;
}



.btn-class-confirmationpage {
  padding: 2% 0;
}


.btn-confirmationpage {
  width: autho;
  margin: 0 1%;
}

/* MODERATION PAGE */

#moderation-intro {
  padding: 3% 5% ;
}

/* REGISTRATION PAGE */
#registration-intro {
  padding: 3% 5%;
  background-color: #F1806F;
  color: #fff;
}

.registration-text-container {
  margin: 4% 0;
}
.registration-text {
  line-height: 2;
  font-size: 20px;

}

docs/documents/.gitkeep METASEP

docs/_templates/moreinfo.html METASEP
<h3>
    Links
</h3>

<ul>
    <li>
        <a href="https://github.com/wemake-services/wemake-django-template">
            GitHub
        </a>
    </li>
    <li>
        <a href="http://wemake.services/meta">
            Meta
        </a>
    </li>
    <li>
        <a href="http://wemake.services/">
            wemake.services
        </a>
    </li>
</ul>
<ul>
    <li>
        <a aria-label="Star wemake-services/wemake-django-template on GitHub" data-count-aria-label="# stargazers on GitHub" data-count-api="/repos/wemake-services/wemake-django-template#stargazers_count" data-count-href="wemake-services/wemake-django-template/stargazers" data-style="mega" data-icon="octicon-star" href="https://github.com/wemake-services/wemake-django-template" class="github-button">Star</a>
    </li>
</ul>

<script async defer src="https://buttons.github.io/buttons.js"></script>

docs/_static/.gitkeep METASEP

docker/django/gunicorn.sh METASEP
#!/usr/bin/env sh

set -o errexit
set -o nounset

# We are using `gunicorn` for production, see:
# http://docs.gunicorn.org/en/stable/configure.html

# Check that $DJANGO_ENV is set to "production",
# fail otherwise, since it may break things:
echo "DJANGO_ENV is $DJANGO_ENV"
if [ "$DJANGO_ENV" != 'production' ]; then
  echo 'Error: DJANGO_ENV is not set to "production".'
  echo 'Application will not start.'
  exit 1
fi

export DJANGO_ENV

# Run python specific scripts:
# Running migrations in startup script might not be the best option, see:
# docs/pages/template/production-checklist.rst
python /code/manage.py migrate --noinput
python /code/manage.py collectstatic --noinput
python /code/manage.py compilemessages

# Start gunicorn:
# Docs: http://docs.gunicorn.org/en/stable/settings.html
# Concerning `workers` setting see:
# https://github.com/wemake-services/wemake-django-template/issues/1022
/usr/local/bin/gunicorn server.wsgi \
  --workers=4 `# Sync worker settings` \
  --max-requests=2000 \
  --max-requests-jitter=400 \
  --bind='0.0.0.0:8000' `# Run Django on 8000 port` \
  --chdir='/code'       `# Locations` \
  --log-file=- \
  --worker-tmp-dir='/dev/shm'

docker/django/entrypoint.sh METASEP
#!/usr/bin/env sh

set -o errexit
set -o nounset

readonly cmd="$*"

postgres_ready () {
  # Check that postgres is up and running on port `5432`:
  dockerize -wait 'tcp://db:5432' -timeout 5s
}

# We need this line to make sure that this container is started
# after the one with postgres:
until postgres_ready; do
  >&2 echo 'Postgres is unavailable - sleeping'
done

# It is also possible to wait for other services as well: redis, elastic, mongo
>&2 echo 'Postgres is up - continuing...'

# Evaluating passed command (do not touch):
# shellcheck disable=SC2086
exec $cmd

docker/django/Dockerfile METASEP
# This Dockerfile uses multi-stage build to customize DEV and PROD images:
# https://docs.docker.com/develop/develop-images/multistage-build/

FROM python:3.8.6-slim-buster AS development_build

LABEL maintainer="sobolevn@wemake.services"
LABEL vendor="wemake.services"

ARG DJANGO_ENV

ENV DJANGO_ENV=${DJANGO_ENV} \
  # build:
  BUILD_ONLY_PACKAGES='wget' \
  # python:
  PYTHONFAULTHANDLER=1 \
  PYTHONUNBUFFERED=1 \
  PYTHONHASHSEED=random \
  PYTHONDONTWRITEBYTECODE=1 \
  # pip:
  PIP_NO_CACHE_DIR=off \
  PIP_DISABLE_PIP_VERSION_CHECK=on \
  PIP_DEFAULT_TIMEOUT=100 \
  # dockerize:
  DOCKERIZE_VERSION=v0.6.1 \
  # tini:
  TINI_VERSION=v0.19.0 \
  # poetry:
  POETRY_VERSION=1.1.4 \
  POETRY_NO_INTERACTION=1 \
  POETRY_VIRTUALENVS_CREATE=false \
  POETRY_CACHE_DIR='/var/cache/pypoetry' \
  PATH="$PATH:/root/.poetry/bin"


# System deps:
RUN apt-get update \
  && apt-get install --no-install-recommends -y \
    bash \
    postgresql \
    build-essential \
    curl \
    gettext \
    git \
    libpq-dev \
    # Defining build-time-only dependencies:
    $BUILD_ONLY_PACKAGES \
  # Installing `dockerize` utility:
  # https://github.com/jwilder/dockerize
  && wget "https://github.com/jwilder/dockerize/releases/download/${DOCKERIZE_VERSION}/dockerize-linux-amd64-${DOCKERIZE_VERSION}.tar.gz" \
  && tar -C /usr/local/bin -xzvf "dockerize-linux-amd64-${DOCKERIZE_VERSION}.tar.gz" \
  && rm "dockerize-linux-amd64-${DOCKERIZE_VERSION}.tar.gz" && dockerize --version \
  # Installing `tini` utility:
  # https://github.com/krallin/tini
  && wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini" \
  && chmod +x /usr/local/bin/tini && tini --version \
  # Installing `poetry` package manager:
  # https://github.com/python-poetry/poetry
  && curl -sSL 'https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py' | python \
  && poetry --version \
  # Removing build-time-only dependencies:
  && apt-get remove -y $BUILD_ONLY_PACKAGES \
  # Cleaning cache:
  && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
  && apt-get clean -y && rm -rf /var/lib/apt/lists/*

WORKDIR /code

# This is a special case. We need to run this script as an entry point:
COPY ./docker/django/entrypoint.sh /docker-entrypoint.sh

# Setting up proper permissions:
RUN chmod +x '/docker-entrypoint.sh' \
  && groupadd -r web && useradd -d /code -r -g web web \
  && chown web:web -R /code \
  && mkdir -p /var/www/django/static /var/www/django/media \
  && chown web:web /var/www/django/static /var/www/django/media

# Copy only requirements, to cache them in docker layer
COPY --chown=web:web ./poetry.lock ./pyproject.toml /code/

# Project initialization:
RUN echo "$DJANGO_ENV" \
  && poetry install \
    $(if [ "$DJANGO_ENV" = 'production' ]; then echo '--no-dev'; fi) \
    --no-interaction --no-ansi \
  # Cleaning poetry installation's cache for production:
  && if [ "$DJANGO_ENV" = 'production' ]; then rm -rf "$POETRY_CACHE_DIR"; fi

# Running as non-root user:
USER web

# We customize how our app is loaded with the custom entrypoint:
ENTRYPOINT ["tini", "--", "/docker-entrypoint.sh"]


# The following stage is only for Prod:
# https://wemake-django-template.readthedocs.io/en/latest/pages/template/production.html
FROM development_build AS production_build
COPY --chown=web:web . /code

docker/caddy/Caddyfile METASEP
# See https://caddyserver.com/docs

# Email for Let's Encrypt expiration notices
{
  email {$TLS_EMAIL}
}

# "www" redirect to "non-www" version
www.{$DOMAIN_NAME} {
  redir https://{$DOMAIN_NAME}{uri}
}

{$DOMAIN_NAME} {
  # HTTPS options:
  header Strict-Transport-Security max-age=31536000;

  # Removing some headers for improved security:
  header -Server

  # Exclude matcher for Django assets
  @excludeDirs {
    not path /static/* /media/*
  }

  # Serving dynamic requests:
  reverse_proxy @excludeDirs web:8000

  # Serves static files, should be the same as `STATIC_ROOT` setting:
  file_server {
    root /var/www/django
  }

   # Allows to use `.gz` files when available:
  encode gzip

  # Logs:
  log {
	  output stdout
  }
}

00-project-documentation/platform-design/README.md METASEP
# AutSPACEs Project Documentation




00-project-documentation/moderation/moderator-guidelines.md METASEP
# Moderating with AutSPACEs

Thank you for your interest in becoming a moderator for AutSPACEs. This is a hugely important and valuable role. As a moderator you will have a direct impact on the experiences of people using the AutSPACEs platform. You can help ensure that AutSPACEs is a welcoming and inclusive space where autistic people can be heard.

* [What to expect as an AutSPACEs moderator](#what-to-expect-as-an-autspaces-moderator)
* [How to moderate: step by step](#how-to-moderate-step-by-step)
* [Code of Conduct](#code-of-conduct)
* [Additional guidelines for writing on behalf of others](#additional-guidelines-for-writing-on-behalf-of-others)
* [How we made the code-of-conduct](#how-we-made-the-code-of-conduct)

## What to expect as an AutSPACEs moderator

As a moderator, your role will be to read experiences which people using the AutSPACEs platform have chosen to share publicly. You will then use the AutSPACEs Code of Conduct to assess whether each story is suitable for publication on AutSPACEs. 

## Benefits of moderating 

### Helping the autism community 

Moderation is absolutely essential to creating a welcoming and inclusive space for autistic people and their supporters online. Unfortunately, autistic people are more likely to encounter problems such as bullying and harassment online which may make their experience negative or prevent them from benefiting from online communities. At AutSPACEs we want to change that by creating a friendly, safe, autistic-voice-first space which diverse autistic people can trust. As a moderator, you can support other autistic people and their allies by making sure that when they come to AutSPACEs they are protected and can feel comfortable sharing their experiences. 

### Having power

As an AutSPACEs moderator, you have a direct say in what gets published. You can also influence the way the platform is run and the values that it upholds. We want you to have power and control over AutSPACEs, because it is your space and exists to support you. If you are frustrated about how autistic people are treated or spoken about online, by becoming an AutSPACEs moderator you can take direct action to change that and create a different space.

### Gaining skills 

Moderation skills are hugely valuable. As a moderator for AutSPACEs you will gain specific skills and understanding about what to look for when you moderate online posts, and how to assess them using a code of conduct. Reading others’ experiences will also broaden your perspective and you will be able to develop your empathy and awareness. 

### Flexibility 

As a moderator, the amount of time you want to put in is up to you. You will not be required to moderate for any set number of hours, and you can stop at any time if you do not wish to continue. It is an entirely flexible volunteering role which you can do from the comfort of your own home. 

## Risks of moderating 

As an AutSPACEs moderator, you will be in a position to shield others from potentially upsetting, triggering, explicit or abusive content. This means you will have to be prepared to read that content. Please therefore only apply to become an AutSPACEs moderator if you are psychologically robust and prepared to encounter such content. 

If you find that you are distressed, concerned, or negatively affected in any way by your experiences as a moderator, please reach out to a member of the moderator team [Bastian?, Georgia?] and we will support you.  

## How to moderate: step by step

* Apply to become a moderator [we need to determine this process]
* Complete moderator onboarding [this also needs to be determined]
* Create a moderator account on AutSPACEs * Log in to AutSPACEs using your moderator account and click on the “moderate” tab at the top menu bar to view stories you can moderate. Here you will see a list of experiences which you can moderate. 
* You will get a snippet view of each experience at first. If it isn’t something you want to read more of or look at, do not expand the snippet view. It will be passed on to another moderator to look at after 24 hours.
* You can moderate as many or as few experiences as you like, and spend as much or as little time moderating as you want to.  * It is vital that when you moderate you use the Code of Conduct to make your decisions. The Code of Conduct has been developed by an autism community to serve an autism community. Following the Code of Conduct is the fairest way of moderating. This is because by following the Code of Conduct, we can make sure that all users of the platform are treated the same, know what to expect, and can understand why decisions have been made. 
* For each experience you moderate, you have four assessment options based on a “traffic lights” system:
> - Green: the experience follows the AutSPACEs code of conduct and there is no or minimal risk to readers. If you choose this option, the person who shared it will be notified and the experience will be published on the AutSPACEs platform and will be available for anyone to read who comes to the platform. 
> - Amber: the experience follows the AutSPACEs code of conduct, and there is some potential risk to readers. For example, it might include upsetting or triggering content. [Whenever you give an amber rating, you will be prompted to add some keywords to explain the nature of the distressing content, for instance, “bullying”, “anorexia”, “self-harm”.]  If you choose this option, the person who shared it will be notified and the experience will be published on the AutSPACEs platform in a hidden view with a trigger warning. Readers will be able to make their own judgement about whether they want to read the story. It will not appear in searches where users have opted not to view potentially triggering content. 
> - Red: the experience does not follow the code of conduct. You will be asked for the part of the code of conduct which the experience does not follow. You should try to copy the code of conduct as closely as possible (e.g. “wording discriminates against disability”). This is so that the response is as objective and impersonal as possible, so that the reason is clear and the user does not feel personally attacked. The user will be notified, and the experience will not be published on the AutSPACEs platform. [It will still be available to the user to make changes and resubmit if they wish].
> - You may also flag the experience for another moderator to look at if you are unsure what assessment to make or if you would like another view. 
When you assess an experience as a moderator, the person who shared the story will be notified that a decision has been made and what the decision is, but you will be completely anonymous, and they will not know that you have made the decision. They will not be able to contact you directly, but they may contact the project team if they wish.
* Once an experience has been given to you to moderate, you have 24 hours to make an assessment decision. After 24 hours, the story will be passed on to another moderator to look at. Do not feel any pressure to keep to this timeframe. The 24 hour window is just to make sure that someone is able to look at the experience and the user who entered it is not waiting. 
* If, while moderating, you have any suggestions about the code of conduct or moderation process please let us know by sharing your feedback using the Google Form link on the moderation page. The Code of Conduct is a “living document” which you can influence if you want the platform to be moderated differently.

# Code of Conduct

## Introduction 
The AutSPACEs platform is an online space which puts autistic people first. 
We are committed to providing a safe and welcoming place for autistic people and their supporters to share experiences, knowing their voices will be heard and their contributions recognised.
AutSPACEs allows users to share stories publicly with other users as well as privately with researchers. 
In order for the platform to be a respectful and welcoming place for autistic people and other members of the community, everyone sharing a story publicly will be required to follow this code of conduct. Before they are published all stories will be reviewed by a moderator who will use this document as guidance when making decisions as to whether a post can be approved or not. 
This code of conduct exists for clarity and fairness, as well as to ensure the values of AutSPACEs are upheld. 
It was co-written by autistic people, the parents and carers of autistic people, and researchers with expertise in creating inclusive online spaces.
The lead investigator of AutSPACEs - [] - is responsible for enforcing the Code of Conduct and overseeing the moderation process. 
They can be contacted by emailing []. Reports may be reviewed by other members of the research team, unless there is a conflict of interest, and will be kept confidential.

## What the platform is and isn't for 
The primary purpose of the platform is to gather data about sensory processing and navigating environments in order to make the world more accessible to autistic people. In order for a story to be approved by moderators it must be relevant to this. This doesn’t mean you can’t write about other things, as long as they relate to sensory experiences. The data we are collecting is also for a specific demographic: all stories must be about experiences of someone who is over the age of 18 at the time of posting. Entries about the past before the user was 18 are permitted. For instance, an 18 year old could post about an experience they had when they were 10, but a 10 year-old would not be permitted to post.
As this is a data collection platform, users will have the option to share their stories with both researchers and/or the public. Further information about how stories will be used by researchers is available [insert link]. Only stories posted to the public will be moderated, all information below.
As much as we would like to be able to help everyone with everything, that is unfortunately out of the scope of this project. AutSPACEs cannot offer professional support, however, we can link you to appropriate sources if necessary. 
 
## What is considered to be sensory

People with autism often have sensory differences. This means their senses may be weaker or stronger than those who are neurotypical. This is why navigating and coping in the world can be very difficult for people with autism.
There are seven senses:
Sight
Hearing
Smell
Taste
Touch
Balance (Vestibular)
Body Awareness (Proprioception)

## What is and isn't acceptable to be mentioned in stories

AutSPACEs is designed to be a welcoming and safe place for all people with autism to share and read experiences. In order to ensure this we have created a Red and Amber list of words and topics that may be offensive or triggering to some users. 
The purpose of having the Red category is to make sure we don’t publish experiences which contravene our values of mutual respect, diversity, and inclusion, or which cause a risk to the person who posts the experience or others. Examples of content marked Red would be direct or indirect attacks on people for being autistic, referring to autism as a dysfunction, using an offensive or prejudicial term to describe someone. Explicitly including someone’s identity or sensitive data is sticlty forbidden, examples of sensitive data are listed below. 
A person’s first name and/or surname
Someone’s contact details including:  address, phone number, school, email address or place of work
Anything that could distinguish that person from others (ie, hair colour or skin tone)

 
The purpose of having the Amber list is to help users identify posts that may find triggering or distressing before they read them, to avoid harm to users of AutSPACEs. While some people may be sensitive to them, it is important that these experiences are available, and that users are free to express themselves. Examples of content marked Amber might be an account of bullying, a traumatic home environment, or descriptions of verbal abuse which a user has experienced. 
Stories that include Red content will automatically be disapproved. Those regarded as Amber will be approved but may be labelled as ‘triggering’ when posted on the platform. 
Any post which discriminates or belittles anyone based on the below categories will be regarded as Red. 
* Neurodiversity
* Gender Identity and/or Expression
* Sexual Orientation
* Disability and/or Health
* Physical Appearance (eg. skin colour, body size, etc.)
* Nationality, Citizenship and Ethnic or Social Origin
* Religion/Belief (or lack thereof)
* Pregnancy and/or Familial Status
* Veteran Status
* Genetic Information
* Property and/or Socio-Economic Status
* Technical Preferences
* Experience Level

 
All racial slurs [insert link to external list of racial slurs] will automatically be considered Red whether they are direct or indirect comments. Swear words and disability slurs will be rated Amber.
Below is a list of topics that may be triggering to some users. All stories that refer to these topics will be listed as Amber.
Abuse (physical, sexual, emotional and verbal)
Violence and Assault
Drug and/or Alcohol use
Mental Health Issues
Negative body image

 
# Additional guidelines for writing on behalf of others

While AutSPACEs exists as a platform where autistic people can share their own stories, we are aware that there will be some cases where autistic people will need support to use the platform or require others may share experiences on their behalf. All of the above rules above are still in place when posting on behalf of others, and anything which breaks them will be automatically disapproved for publication on the AutSPACEs platform.
These are a series of questions to prompt you to think about how you can best share a story that is not your own, in order to make sure the story is respectful, appropriate, and representative. 
Can the person who you are writing about share their own story with support? 

If so, please support them to share their own experience, rather than writing about their experience yourself on their behalf. For instance, if they can speak but not write, it is better to allow them to dictate, and try to write what they are saying as accurately as possible, than to write your own version of their story. It is also a good idea to show what you wish to share to the person who you are writing on behalf of. If you can, try to find out if this reflects their experience and if you can change it to make it better. 
Have they consented to you writing on their behalf?

If so, that’s great. If not, please seek their consent. 
If they do not give their consent, do not share their story, even if you think it would benefit them if it is shared. If they are not able to meaningfully consent, then please share only if you think that it is in their best interests to do so. 
Are you the right person to share this story? 

If there is someone else who has a closer personal connection to the person whose story you would like to be shared on the platform, or who is better qualified to so, consider asking them to share the story instead. You may also wish to share your version of the story with others who know the person well to make it more accurate.
Are you making any assumptions or inferences about the autistic person you are sharing on behalf of?

It is very natural to think we know what is going on in other people’s minds, and sometimes we can talk about this as a fact without even noticing we are doing so. These are not facts but inferences. It is better to stick to telling us what you observed about the autistic person you are writing on behalf of rather than making assumptions about what they think or feel. 
>E.g. don’t write, “my autistic son was stressed because the train was loud’, 
>Please write, ‘My autistic son shouted and covered his ears when a train passed him loudly. This happens frequently.’’ 

The aim of entering on behalf of others should be in the service of autistic people’s wellbeing. 
If you need more support as a carer or parent, we recommend these resources: [link to resources?]
Are you adding subjective and personal details which are your own? 
It is better to write neutrally about the things you are observing. 
Focus on the experience of the autistic person you are writing on behalf of. Don’t focus on your own experiences or the experiences of other people, except when it is relevant to the autistic person’s experience. In particular, do not use this space for venting or complaining about autistic people.   
>E.g. don’t write, “I hate it when my autistic son makes a scene in the supermarket, it’s so embarrassing”, 
>Please write, “my autistic son cried and stood still in a busy supermarket. Some people around us showed negative expressions and body language while this happened. This usually  occurs when we go to the supermarket.” 

## Responding to others' stories
AutSPACEs is designed to be a safe space where people can post their experiences without the fear of receiving negative or upsetting responses. In order to maintain this safety there is no comment section on the site. Any stories posted as a direct response to another post will be disapproved. 
However, as AutSPACEs is an anonymous platform, it is permissible to discuss stories on other sites. 

## Consequences for disapproved posts 
If you post a story that the moderators believe goes against this Code of Conduct it will be disapproved. 
You will have the opportunity to edit and resubmit the story. Each time someone posts a story that is disapproved they will receive a warning. 
We appreciate that not everyone thinks or communicates in the same way, which is why this guide has been written. 
Each case will be viewed individually and if you are unsure why a story was disapproved you contact us for an explanation.

## How to report breaches of the code of conduct and safeguarding

[Set-out how users can report harmful content.
Explanation of penalties process/redress process
Explanation of user safeguarding process.
 
Action: Put information on moderation best practices on the internet into a paper to be used to support the adapted moderation strategy. 
Research on best practice].

# How we made the code-of-conduct

The code of conduct and moderation guidelines have been co-created with the AutSPACEs autism community. 
It is a 'living document', which means that you are always welcome to give us feedback so that we can improve it.
We have been working on moderation in the AutSPACEs project management repository. You can find out more or take part by looking at the issues and Milestones labeled [Moderation](https://github.com/alan-turing-institute/AutisticaCitizenScience/issues?q=is%3Aopen+is%3Aissue+milestone%3AModeration).

All of our decisions about the code of conduct and moderation process have been made based on extensive community discussions so it can best reflect and balance the needs and priorities of a diverse autism community. 
You can read the content of many of those discussions in the [Community Recommendations](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/community-recommendations/moderation-co-creation.) section of our project management GitHub repository. 

00-project-documentation/moderation/moderation-review-guidelines.md METASEP
# Moderation Report: Review Guidelines

Thank you for helping design a moderation process for AutSPACEs. Your insights will help build an online space that it is more community-led, safe, and inclusive for all.

This document contains guidelines for reading the report of the moderation session you took part in on the 30th November 2020. You now have an opportunity to read through the report and ask for changes to be made before it is published. 

The report has been sent to you in a separate document by email.

You will be paid £30 to compensate you for this work. You will be paid whether or not you ask us to make any changes.

If the process is confusing, or if you have any questions, please contact Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

She can talk you through the summary document and take your feedback via. phone call or Zoom if you would prefer. 

### Table of contents:

* [What is the moderation report?](#what-is-the-moderation-report)
* [How was the moderation report written?](#how-was-the-moderation-reeport-written)
* [Reviewing the moderation report](#reviewing-the-moderation-report)
* [Thank you](#thank-you)

## What is the Moderation Report?

Two autistic researchers are leading on the task of creating a moderation process and code of conduct for AutSPACEs. We want this code of conduct to reflect your views. 

We would like to share the insights from our discussions about moderations so that 1) others can be better informed about autistic people's and parents' priorities about moderation and 2) to provide tools for others to conduct their own inclusive research. 

The report is a collection of anonymised quotes from participants of the moderation discussions. 

## How was the Moderation Report written?

### 1. Attend discussion session

You joined a discussion on Zoom to talk about the AutSPACEs project. This project involves designing an online platform to use for researching sensory processing differences and autism. The discussion focussed on how best to moderate the platform. 

The session was broken up into a set of smaller discussion groups and whole group discussions. All groups were recorded. 

### 2. Transcribe discussion

The moderation co-creation session was typed out word-for-word by a researcher. No personally identifying information was included in this process.

Personally identifying information includes:

* Names of individuals
* Precise ages
* Schools, workplaces, universities, and addresses

The recordings were then deleted.

### 3. Collect anonymised quotes

Quotations were taken from the transcription document, shortened, and organised into groups based on common themes. The quotations were arranged into different documents depending on the groups in which they were discussed. Some more edits were made to remove information which was redundant, for instance repeated words or sentences, or non-semantic additions which are common in verbal transcripts (such as, 'uhm'). Paticularly sensitive, personal detail about other people was summarised or rephrased so as to preserve as much content as possible without compromising the individual.

These insights are contained in the moderation report you have been sent. At this stage you will only have access to the quotations from the discussion groups you took part in. 

### 3.a. Remove quotes that could be harmful to autistic people

For the purposes of creating a public dataset which is autism-voice first, we have edited out comments which contain negative emotional responses, struggles, or judgements that non-autistic people have about autistic people, where the emphasis is on non-autistic people’s experiences (e.g., personal reactions to autistic people's behaviours).

We have kept comments about non-autistic people's responses to autistic people, when the emphasis is on autistic people's experiences (e.g., comments about dealing with neurotypical prejudice).

This is because feedback from the AutSPACEs community has been predominantly that there should be an emphasis on autistic people's experiences first and foremost.
Having too much focus on non-autistic views of autistic people can be damaging to autistic people and work against creating a safe space for autistic voices to be heard.

## What happens next?

### 4. Review the moderation report for the discussions you took part in

You have a chance to review the moderation report and make changes. 

We ask that you:

1. Understand the purpose of the document and what is going to happen with the insights.
2. Understand the information in the document.
3. Ensure the information is appropriately anonymised.
4. Think about whether your and others' comments are appropriate to the values of the project. Our values are to be autistic-voice first, to reflect a diversity of perspectives, and to be welcoming and inclusive. 
5. Send us any requested changes.

More information about how to review the document is available below. 

We may not be able to incorporate everyone's requests, but we will try our best to be guided by you.

### 5. (Optional) Review the Moderation Report for the group as a whole

If you would like to see a full version of the moderation report after the first set of edits have been made please contact Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

Our decision to make this an optional step is to balance collective decision making and protecting your time.

We want to give you a chance at this stage to request changes to the report before publication.
However the document is very long and we do not want to burden you with additional work reviewing quotes from other focus group participants.

### 6. Publish insights online

The moderation report will be published online at: [https://github.com/alan-turing-institute/AutisticaCitizenScience](https://github.com/alan-turing-institute/AutisticaCitizenScience).

The quotes from the moderation report can be used by anyone and for any purpose.
Anyone using the information must credit the Autistica/Citizen Science community.

Potential users include:

* Future contributors to this project who want to add to the insights from the moderation report. 
* Autism researchers and advocates who want to make sure they are serving the needs of autistic people.
* Parents, friends and colleagues who want to better understand how to support an autistic person they know.

**Anyone can read the quotes so it is important that you are comfortable having the information in the document be publicly available on the internet.**

### 7. Create a moderation process and code of conduct for the platform

Your thoughts and comments will be read by autistic researchers, and they will be used to help design a moderation process for the platform and write a code of conduct based on your expertise, views, hopes, and concerns.

If you would like to be more involved in moderation discussions, please contact Lotty Coupat at [mailto:ccoupat@turing.ac.uk]. 

## Reviewing the summary document

Please review the summary document and make sure that you:

1. [Understand the purpose](#understand-the-purpose) of the document and what is going to happen with the insights.
2. [Understand the information](#understand-the-information) in the document.
3. [Ensure the information is appropriately anonymised](#ensure-the-information-is-appropriately-anonymised).
4. [Send us any requested changes](#send-us-any-requested-changes).

These steps are explained in more detail below.

### Understand the purpose

Please look through the moderation report and let us know if there is anything you would like changed.

This is so that you can be sure we are using the information you give us in a way you know about and are comfortable with.

We will take out any of your own comments if you ask us to.

You can also ask us to change comments from you, or to include additional information.
These will be included in the published summary, with a note to explain that they were changed from the original summary.

If you do not understand the purpose of reviewing the summary document please contact Georgia at [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk).

### Understand the information

All the quotes in the summary document have been anonymised.
This means there is no personally identifying information associated with them.

However, we have kept some information about the speaker to make sure that the quotes are interpreted in an appropriate context.

This means that although you should not be identifiable more broadly, you are likely to be identifiable to people who know you well.

To retain important information about the speaker while preserving their anonymity, we have labelled each quote with the following ***Key***:

#### Organisation

Quotes from anyone employed by **Autistica** or the **Alan Turing Institute** are marked with an italics capital letter:

* Autistica: _A_
* Turing: _T_

This tag is used to show which organisation the speaker is from.
Autistica is an autism research charity which funds the project and recruits members for the Insight Group.

The Turing is the UK's national institute for artificial intelligence and data science, and is funded to carry out the AutSPACEs project.

#### Specialist Role on Project

Quotes from researchers paid to work on the project are marked with a capital letter:

* Researcher: R

#### Expertise by lived experience

Quotes from people who are experts by experience of autism are marked with a bold capital letter:

* Autistic person: **A**
* Parent of an autistic person: **P**

#### Connection to Experience

Quotes can be in reference to direct or indirect experiences, or may be general comments.

* Direct experience or opinion of the speaker: `d`
* Indirect experience, one that was witnessed, reported, or inferred on behalf of someone else by the speaker: `i`
* General comment: `g`

The connection to the experience gives important information which might be needed to understand the comment.

A comment which is about a group of which the speaker is a member is labelled `g`, for  general - for example, "people want lots of options".

People can be members of multiple groups: the **organisation** they work for, their **specialist role in the study**, their **expertise by lived experience**, and their **connection to the experience** they are sharing.

For example:

* A quote from someone who is autistic and a parent of an autistic person speaking about an indirect experience would be identified as "**A P** `i`".
* A quote from someone who works at the Turing Institute and is a researcher and who is making a general comment would be identified as "_T_ R `g`".
* A quote from someone who works at Autistica and is a parent of an autistic person, and who is sharing a direct lived experience would be identified as "_A_ **P** `d`"

### Ensure the information is appropriately anonymised

We are balancing our responsibility to not share personal information with our goal of being as transparent as possible, and of sharing valuable insights with the research community.

It is up to you how you decide if anything needs to be changed or taken out, but here are some things you might want to think about: 

1. Would you be happy for a stranger to read this comment?
2. Is there anything in this comment which would make it clear who you are to a stranger?
3. Is there anything in this comment which would make it clear to a family member, colleague, or friend that you are the speaker.
  If so, are you happy for them to read it? 
4. Is there anything in the comment which would allow other people to know that they are being spoken about?
  If so, are you happy for them to read it?
5. If you are writing about someone else, would they be happy for the comment to be public? If you can, ask them directly.

### Send us any requested changes

We hope that we have summarised your insights from the focus groups responsibly.

If we have done our job well, it should be hard to identify who said what in the summary document.

It is very important to us that you are comfortable with the information being made publicly available.

Please email [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) with any changes you would like to be made to quotes in the document.

**Please reply in 3 weeks.**
You can ask for more time or to ask any questions about steps that are confusing.

## Thank you

We always welcome general feedback.

Please email [gaitkenhead@turing.ac.uk](mailto:gaitkenhead@turing.ac.uk) with any feedback or requests for changes, or add them to our "always open" Google Form at [https://bit.ly/AutisticaTuringCitSciForm](https://bit.ly/AutisticaTuringCitSciForm).

00-project-documentation/moderation/moderation-decisions.md METASEP
> This file documents all the decisions that have been discussed during the community meet-ups from November 2021 to December 2021. 

> We will focus on **the moderation policy, training sessions and reflection sessions for moderation** to minimize the infrastructure work required from the AutSPACEs platform.


* Each experience will be moderated by **1 moderator**.
* If moderators are unsure about their decisions, they can **flag the experiences as ambiguous**. The ambiguous experiences will be moderated by reviewers. 
* Moderators remain **anonymous** to each other, but moderation decisions are **visible**. Only administrators can see moderators' names and decisions in the database.
* Moderators will select experiences on their own for moderation. Once experiences are selected, moderators should moderate them within 24 hours. Otherwise, the experiences will be put back into the pool.
* **Appeal requests** will be collected through Google Form and be sent to reviewers. 
* **Harmful reports** will be collected through Google Form and be sent to moderators. Moderators will re-label the mentioned experiences based on the reports. 
* Email should be avoided to use as the means of the communication in the platform as it is not user-friendly and can be quite hard to document.



00-project-documentation/moderation/README.md METASEP
# Moderation

This folder contains informations, resources and decisions relating to the moderation process for the AutSPACEs platform. You can find more details on this in the [archived AutisticaCitizenScience repository](https://github.com/alan-turing-institute/AutisticaCitizenScience/tree/master/Moderation). 

00-project-documentation/community/README.md METASEP
# Community 

This folder contains recommendations and feedback from the AutSPACEs commmunity, as well as information about community meet-up sessions.

## Contents

* [Focus groups](focus-groups)
* [Meet-up Sessions](meet-ups)
* [Moderation workshop](moderation-workshop)
* [User tests](user-tests)

00-project-documentation/communication/README.md METASEP
# Project communications

You can find (nearly) all of the official communications done by and on the AutSPACEs project in this folder.

## Contents

### Applications
This includes applications for funding, internships, conference presentations and so on.

### Newsletters
We send regular updates to our community to keep them updated on how the project is progressing.
This directory contains the original versions of these newsletters for our records and to make them easy to re-use in the future.

### Presentations
When we deliver presentations, we publish our slides openly on Zenodo.org. This folder contains links to those slides.

### Reports
Progress reports on AutSPACEs. These can be internal sprint updates or official reports we have written.

## Subscribe to the mailing list

📫 You can subscribe to receive the project newsletter by email at [https://tinyletter.com/AutisticaTuringCitizenScience](https://tinyletter.com/AutisticaTuringCitizenScience).

✉️ You can see all the archives of the newsletter at [https://tinyletter.com/AutisticaTuringCitizenScience/archive](https://tinyletter.com/AutisticaTuringCitizenScience/archive).

tests/test_server/test_urls.py METASEP
import pytest
from django.test import Client


@pytest.mark.django_db
def test_health_check(client: Client) -> None:
    """This test ensures that health check is accessible."""
    response = client.get('/health/')

    assert response.status_code == 200


def test_admin_unauthorized(client: Client) -> None:
    """This test ensures that admin panel requires auth."""
    response = client.get('/admin/')

    assert response.status_code == 302


def test_admin_authorized(admin_client: Client) -> None:
    """This test ensures that admin panel is accessible."""
    response = admin_client.get('/admin/')

    assert response.status_code == 200


def test_admin_docs_unauthorized(client: Client) -> None:
    """This test ensures that admin panel docs requires auth."""
    response = client.get('/admin/doc/')

    assert response.status_code == 302


def test_admin_docs_authorized(admin_client: Client) -> None:
    """This test ensures that admin panel docs are accessible."""
    response = admin_client.get('/admin/doc/')

    assert response.status_code == 200
    assert b'docutils' not in response.content


def test_robots_txt(client: Client) -> None:
    """This test ensures that `robots.txt` is accessible."""
    response = client.get('/robots.txt')

    assert response.status_code == 200
    assert response.get('Content-Type') == 'text/plain'


def test_humans_txt(client: Client) -> None:
    """This test ensures that `humans.txt` is accessible."""
    response = client.get('/humans.txt')

    assert response.status_code == 200
    assert response.get('Content-Type') == 'text/plain'

server/templates/txt/robots.txt METASEP
User-agent: *
Disallow:

server/templates/txt/humans.txt METASEP
# The humans responsible & technology colophon
# http://humanstxt.org/


## Alan Turing Institute

Team:


## Technologies

Language: English
Doctype: HTML5
Technologies: Python, Django

server/settings/environments/local.py.template METASEP
"""Override any custom settings here."""

locale/.gitkeep METASEP

docs/make.bat METASEP
@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
	set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
set BUILDDIR=_build
set SPHINXPROJ=wemake-django-template

if "%1" == "" goto help

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
	echo.
	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
	echo.installed, then set the SPHINXBUILD environment variable to point
	echo.to the full path of the 'sphinx-build' executable. Alternatively you
	echo.may add the Sphinx directory to PATH.
	echo.
	echo.If you don't have Sphinx installed, grab it from
	echo.http://sphinx-doc.org/
	exit /b 1
)

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%

:end
popd

docs/index.rst METASEP
Welcome to wemake-django-template's documentation!
==================================================


What this project is all about?
The main idea of this project is to provide a fully configured
template for ``django`` projects, where code quality, testing,
documentation, security, and scalability are number one priorities.

This template is a result of implementing
`our processes <https://github.com/wemake-services/meta>`_,
it should not be considered as an independent part.


Goals
-----

When developing this template we had several goals in mind:

- Development environment should be bootstrapped easily,
  so we use ``docker-compose`` for that
- Development should be consistent, so we use strict quality and style checks
- Development, testing, and production should have the same environment,
  so again we develop, test, and run our apps in ``docker`` containers
- Documentation and codebase are the only sources of truth


Limitations
-----------

This project implies that:

- You are using ``docker`` for deployment
- You are using Gitlab and Gitlab CI
- You are not using any frontend assets in ``django``,
  you store your frontend separately


Should I choose this template?
------------------------------

This template is oriented on big projects,
when there are multiple people working on it for a long period of time.

If you want to simply create a working prototype without all these
limitations and workflows - feel free to choose any
`other template <https://github.com/audreyr/cookiecutter#python-django>`_.


How to start
------------

You should start with reading the documentation.
Reading order is important.

There are multiple processes that you need to get familiar with:

- First time setup phase: what system requirements you must fulfill,
  how to install dependencies, how to start your project
- Active development phase: how to make changes, run tests,


.. toctree::
   :maxdepth: 2
   :caption: Setting things up:

   pages/template/overview.rst
   pages/template/development.rst
   pages/template/django.rst

.. toctree::
   :maxdepth: 2
   :caption: Quality assurance:

   pages/template/documentation.rst
   pages/template/linters.rst
   pages/template/testing.rst
   pages/template/security.rst
   pages/template/gitlab-ci.rst

.. toctree::
   :maxdepth: 2
   :caption: Production:

   pages/template/production-checklist.rst
   pages/template/production.rst

.. toctree::
   :maxdepth: 1
   :caption: Extras:

   pages/template/upgrading-template.rst
   pages/template/faq.rst
   pages/template/troubleshooting.rst


Indexes and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

docs/Makefile METASEP
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS    =
SPHINXBUILD   = python -msphinx
SPHINXPROJ    = wemake-django-template
SOURCEDIR     = .
BUILDDIR      = _build

# Put it first so that "make" without argument is like "make help".
help:
	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

docker/docker-compose.prod.yml METASEP
---

# This compose-file is production only. So, it should not be called directly.
#
# Instead, it should be a part of your deploy strategy.
# This setup is supposed to be used with `docker-swarm`.
# See `./docs/pages/template/production.rst` docs.

version: "3.6"
services:
  caddy:
    image: "caddy:2.2.1"
    restart: unless-stopped
    env_file: ./config/.env
    volumes:
      - ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile  # configuration
      - caddy-config:/config  # configuration autosaves
      - caddy-data:/data  # saving certificates
      - django-static:/var/www/django/static  # serving django's statics
      - django-media:/var/www/django/media  # serving django's media
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - web
    networks:
      - proxynet

  web:
    <<: &web
      # Image for production:
      image: "registry.gitlab.com/Alan Turing Institute/autspaces:latest"
      build:
        target: production_build
        args:
          DJANGO_ENV: production

      restart: unless-stopped
      volumes:
        - django-media:/var/www/django/media  # since in dev it is app's folder
        - django-locale:/code/locale  # since in dev it is app's folder

    command: sh ./docker/django/gunicorn.sh
    networks:
      - proxynet
    expose:
      - 8000

# This task is an example of how to extend existing ones:
#   some_wroker:
#     <<: *web
#     command: python manage.py worker_process
#     deploy:
#       replicas: 2

networks:
  # Network for your proxy server and application to connect them,
  # do not use it for anything else!
  proxynet:

volumes:
  django-media:
  django-locale:
  caddy-config:
  caddy-data:

docker/ci.sh METASEP
#!/usr/bin/env sh

set -o errexit
set -o nounset

# Initializing global variables and functions:
: "${DJANGO_ENV:=development}"

# Fail CI if `DJANGO_ENV` is not set to `development`:
if [ "$DJANGO_ENV" != 'development' ]; then
  echo 'DJANGO_ENV is not set to development. Running tests is not safe.'
  exit 1
fi

pyclean () {
  # Cleaning cache:
  find . \
  | grep -E '(__pycache__|\.hypothesis|\.perm|\.cache|\.static|\.py[cod]$)' \
  | xargs rm -rf
}

run_ci () {
  echo '[ci started]'
  set -x  # we want to print commands during the CI process.

  # Testing filesystem and permissions:
  touch .perm && rm -f .perm
  touch '/var/www/django/media/.perm' && rm -f '/var/www/django/media/.perm'
  touch '/var/www/django/static/.perm' && rm -f '/var/www/django/static/.perm'

  # Checking `.env` files:
  dotenv-linter config/.env config/.env.template

  # Running linting for all python files in the project:
  flake8 .

  # Running type checking, see https://github.com/typeddjango/django-stubs
  mypy manage.py server $(find tests -name '*.py')

  # Running tests:
  pytest --dead-fixtures
  pytest

  # Run checks to be sure we follow all django's best practices:
  python manage.py check --fail-level WARNING

  # Run checks to be sure settings are correct (production flag is required):
  DJANGO_ENV=production python manage.py check --deploy --fail-level WARNING

  # Check that staticfiles app is working fine:
  DJANGO_ENV=production DJANGO_COLLECTSTATIC_DRYRUN=1 \
    python manage.py collectstatic --no-input --dry-run

  # Check that all migrations worked fine:
  python manage.py makemigrations --dry-run --check

  # Check that all migrations are backwards compatible:
  python manage.py lintmigrations --exclude-apps=axes --warnings-as-errors

  # Checking if all the dependencies are secure and do not have any
  # known vulnerabilities:
  safety check --full-report

  # Checking `pyproject.toml` file contents:
  poetry check

  # Checking dependencies status:
  pip check

  # Checking docs:
  doc8 -q docs

  # Checking `yaml` files:
  yamllint -d '{"extends": "default", "ignore": ".venv"}' -s .

  # Checking translation files, ignoring ordering and locations:
  polint -i location,unsorted locale

  # Also checking translation files for syntax errors:
  if find locale -name '*.po' -print0 | grep -q "."; then
    # Only executes when there is at least one `.po` file:
    dennis-cmd lint --errorsonly locale
  fi

  set +x
  echo '[ci finished]'
}

# Remove any cache before the script:
pyclean

# Clean everything up:
trap pyclean EXIT INT TERM

# Run the CI process:
run_ci

config/.env.template METASEP
# Security Warning! Do not commit this file to any VCS!
# This is a local file to speed up development process,
# so you don't have to change your environment variables.
#
# This is not applied to `.env.template`!
# Template files must be committed to the VCS, but must not contain
# any secret values.


# === General ===

DOMAIN_NAME=test.com
TLS_EMAIL=webmaster@test.com


# === Django ===
# Generate yours with:
# python3 -c 'from django.utils.crypto import get_random_string; print(get_random_string(50))'

DJANGO_SECRET_KEY=__CHANGEME__


# === Database ===

# These variables are special, since they are consumed
# by both django and postgres docker image.
# Cannot be renamed if you use postgres in docker.
# See: https://hub.docker.com/_/postgres

POSTGRES_DB=autspaces
POSTGRES_USER=autspaces
POSTGRES_PASSWORD=

# Used only by django:
DJANGO_DATABASE_HOST=localhost
DJANGO_DATABASE_PORT=5432

# Used by OpenHumans
# Refer to https://django-open-humans.readthedocs.io/en/latest/modules/getting-started.html for more information
OPENHUMANS_CLIENT_ID=
OPENHUMANS_CLIENT_SECRET=
OPENHUMANS_APP_BASE_URL=
OH_PROJ_PAGE=""

server/settings/environments/production.py METASEP
"""
This file contains all the settings used in production.

This file is required and if development.py is present these
values are overridden.
"""

from server.settings.components import config

# Production flags:
# https://docs.djangoproject.com/en/2.2/howto/deployment/

DEBUG = False

ALLOWED_HOSTS = [
    # TODO: check production hosts
    config('DOMAIN_NAME'),

    # We need this value for `healthcheck` to work:
    'localhost',
]


# Staticfiles
# https://docs.djangoproject.com/en/2.2/ref/contrib/staticfiles/

# This is a hack to allow a special flag to be used with `--dry-run`
# to test things locally.
_COLLECTSTATIC_DRYRUN = config(
    'DJANGO_COLLECTSTATIC_DRYRUN', cast=bool, default=False,
)
# Adding STATIC_ROOT to collect static files via 'collectstatic':
STATIC_ROOT = '.static' if _COLLECTSTATIC_DRYRUN else '/var/www/django/static'

STATICFILES_STORAGE = (
    # This is a string, not a tuple,
    # but it does not fit into 80 characters rule.
    'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
)


# Media files
# https://docs.djangoproject.com/en/2.2/topics/files/

MEDIA_ROOT = '/var/www/django/media'


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

_PASS = 'django.contrib.auth.password_validation'  # noqa: S105
AUTH_PASSWORD_VALIDATORS = [
    {'NAME': '{0}.UserAttributeSimilarityValidator'.format(_PASS)},
    {'NAME': '{0}.MinimumLengthValidator'.format(_PASS)},
    {'NAME': '{0}.CommonPasswordValidator'.format(_PASS)},
    {'NAME': '{0}.NumericPasswordValidator'.format(_PASS)},
]


# Security
# https://docs.djangoproject.com/en/2.2/topics/security/

SECURE_HSTS_SECONDS = 31536000  # the same as Caddy has
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SECURE_REDIRECT_EXEMPT = [
    # This is required for healthcheck to work:
    '^health/',
]

SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

server/settings/environments/local.py METASEP
"""Override any custom settings here."""

server/settings/environments/development.py METASEP
"""
This file contains all the settings that defines the development server.

SECURITY WARNING: don't run with debug turned on in production!
"""

import logging
import os.path
from typing import List

from server.settings.components import config
from server.settings.components.common import INSTALLED_APPS, MIDDLEWARE

# Setting the development status:

DEBUG = True

ALLOWED_HOSTS = [
    config('DOMAIN_NAME'),
    'localhost',
    '0.0.0.0',  # noqa: S104
    '127.0.0.1',
    '[::1]',
]


# Installed apps for development only:

INSTALLED_APPS += (
    'debug_toolbar',
    'nplusone.ext.django',
    'django_migration_linter',
    'django_test_migrations.contrib.django_checks.AutoNames',
    'django_test_migrations.contrib.django_checks.DatabaseConfiguration',
    'extra_checks',
)


# Static files:
# https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-STATICFILES_DIRS

STATIC_URL = "/static/"

STATICFILES_DIRS: List[str] = [
    os.path.join('static'),

]

# Django debug toolbar:
# https://django-debug-toolbar.readthedocs.io

MIDDLEWARE += (
    'debug_toolbar.middleware.DebugToolbarMiddleware',

    # https://github.com/bradmontgomery/django-querycount
    # Prints how many queries were executed, useful for the APIs.
    'querycount.middleware.QueryCountMiddleware',
)


def _custom_show_toolbar(request):
    """Only show the debug toolbar to users with the superuser flag."""
    return DEBUG and request.user.is_superuser


DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK':
        'server.settings.environments.development._custom_show_toolbar',
}

# This will make debug toolbar to work with django-csp,
# since `ddt` loads some scripts from `ajax.googleapis.com`:
CSP_SCRIPT_SRC = ("'self'", 'ajax.googleapis.com',
                  'cdnjs.cloudflare.com', 'maxcdn.bootstrapcdn.com')
CSP_IMG_SRC = ("'self'", 'data:')
CSP_CONNECT_SRC = ("'self'",)
CSP_FONT_SRC = ("'self'", 'fonts.gstatic.com',
                'maxcdn.bootstrapcdn.com', 'netdna.bootstrapcdn.com')
CSP_STYLE_SRC = ("'self'", "'unsafe-inline'", 'fonts.googleapis.com',
                 'maxcdn.bootstrapcdn.com', 'netdna.bootstrapcdn.com')


# nplusone
# https://github.com/jmcarp/nplusone

# Should be the first in line:
MIDDLEWARE = (  # noqa: WPS440
    'nplusone.ext.django.NPlusOneMiddleware',
) + MIDDLEWARE

# Logging N+1 requests:
NPLUSONE_RAISE = True  # comment out if you want to allow N+1 requests
NPLUSONE_LOGGER = logging.getLogger('django')
NPLUSONE_LOG_LEVEL = logging.WARN
NPLUSONE_WHITELIST = [
    {'model': 'admin.*'},
]


# django-test-migrations
# https://github.com/wemake-services/django-test-migrations

# Set of badly named migrations to ignore:
DTM_IGNORED_MIGRATIONS = frozenset((
    ('axes', '*'),
))


# django-extra-checks
# https://github.com/kalekseev/django-extra-checks

EXTRA_CHECKS = {
    'checks': [
        # Forbid `unique_together`:
        'no-unique-together',
        # Require non empty `upload_to` argument:
        'field-file-upload-to',
        # Use the indexes option instead:
        'no-index-together',
        # Each model must be registered in admin:
        'model-admin',
        # FileField/ImageField must have non empty `upload_to` argument:
        'field-file-upload-to',
        # Text fields shouldn't use `null=True`:
        'field-text-null',
        # Prefer using BooleanField(null=True) instead of NullBooleanField:
        'field-boolean-null',
        # Don't pass `null=False` to model fields (this is django default)
        'field-null',
        # ForeignKey fields must specify db_index explicitly if used in
        # other indexes:
        {'id': 'field-foreign-key-db-index', 'when': 'indexes'},
        # If field nullable `(null=True)`,
        # then default=None argument is redundant and should be removed:
        'field-default-null',
        # Fields with choices must have companion CheckConstraint
        # to enforce choices on database level
        'field-choices-constraint',
    ],
}

server/settings/environments/__init__.py METASEP

"""Overriding settings based on the environment."""

server/settings/components/logging.py METASEP
# Logging
# https://docs.djangoproject.com/en/2.2/topics/logging/

# See also:
# 'Do not log' by Nikita Sobolev (@sobolevn)
# https://sobolevn.me/2020/03/do-not-log

import structlog

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,

    # We use these formatters in our `'handlers'` configuration.
    # Probably, you won't need to modify these lines.
    # Unless, you know what you are doing.
    'formatters': {
        'json_formatter': {
            '()': structlog.stdlib.ProcessorFormatter,
            'processor': structlog.processors.JSONRenderer(),
        },
        'console': {
            '()': structlog.stdlib.ProcessorFormatter,
            'processor': structlog.processors.KeyValueRenderer(
                key_order=['timestamp', 'level', 'event', 'logger'],
            ),
        },
    },

    # You can easily swap `key/value` (default) output and `json` ones.
    # Use `'json_console'` if you need `json` logs.
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'console',
        },
        'json_console': {
            'class': 'logging.StreamHandler',
            'formatter': 'json_formatter',
        },
    },

    # These loggers are required by our app:
    # - django is required when using `logger.getLogger('django')`
    # - security is required by `axes`
    'loggers': {
        'django': {
            'handlers': ['console'],
            'propagate': True,
            'level': 'INFO',
        },
        'security': {
            'handlers': ['console'],
            'level': 'ERROR',
            'propagate': False,
        },
    },
}

structlog.configure(
    processors=[
        structlog.stdlib.filter_by_level,
        structlog.processors.TimeStamper(fmt='iso'),
        structlog.stdlib.add_logger_name,
        structlog.stdlib.add_log_level,
        structlog.stdlib.PositionalArgumentsFormatter(),
        structlog.processors.StackInfoRenderer(),
        structlog.processors.format_exc_info,
        structlog.processors.UnicodeDecoder(),
        structlog.processors.ExceptionPrettyPrinter(),
        structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
    ],
    context_class=structlog.threadlocal.wrap_dict(dict),  # type: ignore
    logger_factory=structlog.stdlib.LoggerFactory(),
    wrapper_class=structlog.stdlib.BoundLogger,
    cache_logger_on_first_use=True,
)

server/settings/components/csp.py METASEP
"""
This file contains a definition for Content-Security-Policy headers.

Read more about it:
https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Content-Security-Policy

We are using `django-csp` to provide these headers.
Docs: https://github.com/mozilla/django-csp
"""

CSP_SCRIPT_SRC = ("'self'",)
CSP_IMG_SRC = ("'self'",)
CSP_FONT_SRC = ("'self'",)
CSP_STYLE_SRC = ("'self'",)
CSP_DEFAULT_SRC = ("'none'",)

server/settings/components/common.py METASEP
"""
Django settings for server project.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their config, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

from typing import Dict, List, Tuple, Union

from django.utils.translation import ugettext_lazy as _

from server.settings.components import BASE_DIR, config

# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

SECRET_KEY = config('DJANGO_SECRET_KEY')

OPENHUMANS_APP_BASE_URL = config('OPENHUMANS_APP_BASE_URL')
OPENHUMANS_CLIENT_ID = config('OPENHUMANS_CLIENT_ID')
OPENHUMANS_CLIENT_SECRET = config('OPENHUMANS_CLIENT_SECRET')

# After log in, send users to the home page.
LOGIN_REDIRECT_URL = 'main:overview'

# Project's page on Open Humans
OH_PROJ_PAGE = config('OH_PROJ_PAGE')

# Application definition:

INSTALLED_APPS: Tuple[str, ...] = (

    # django-open-humans dependency
    'openhumans',

    # Your apps go here:
    'server.apps.main',

    # Default django apps:
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',

    # django-admin:
    'django.contrib.admin',
    'django.contrib.admindocs',

    # Security:
    'axes',

    # Health checks:
    # You may want to enable other checks as well,
    # see: https://github.com/KristianOellegaard/django-health-check
    'health_check',
    'health_check.db',
    'health_check.cache',
    'health_check.storage',
)

MIDDLEWARE: Tuple[str, ...] = (
    # Content Security Policy:
    'csp.middleware.CSPMiddleware',

    # Django:
    'django.middleware.security.SecurityMiddleware',
    'django_feature_policy.FeaturePolicyMiddleware',  # django-feature-policy
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    # Axes:
    'axes.middleware.AxesMiddleware',

    # Django HTTP Referrer Policy:
    'django_http_referrer_policy.middleware.ReferrerPolicyMiddleware',
)

ROOT_URLCONF = 'server.urls'

WSGI_APPLICATION = 'server.wsgi.application'


# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': config('POSTGRES_DB'),
        'USER': config('POSTGRES_USER'),
        'PASSWORD': config('POSTGRES_PASSWORD'),
        'HOST': config('DJANGO_DATABASE_HOST'),
        'PORT': config('DJANGO_DATABASE_PORT', cast=int),
        'CONN_MAX_AGE': config('CONN_MAX_AGE', cast=int, default=60),
        'OPTIONS': {
            'connect_timeout': 10,
        },
    },
}


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

USE_I18N = True
USE_L10N = True

LANGUAGES = (
    ('en', _('English')),
    ('ru', _('Russian')),
)

LOCALE_PATHS = (
    'locale/',
)

USE_TZ = True
TIME_ZONE = 'UTC'


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)


# Templates
# https://docs.djangoproject.com/en/2.2/ref/templates/api

TEMPLATES = [{
    'APP_DIRS': True,
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [
        # Contains plain text templates, like `robots.txt`:
        BASE_DIR.joinpath('server', 'templates'),
    ],
    'OPTIONS': {
        'context_processors': [
            # Default template context processors:
            'django.contrib.auth.context_processors.auth',
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.media',
            'django.contrib.messages.context_processors.messages',
            'django.template.context_processors.request',
            'server.apps.main.context_processors.create_auth_url'
        ],
    },
}]


# Media files
# Media root dir is commonly changed in production
# (see development.py and production.py).
# https://docs.djangoproject.com/en/2.2/topics/files/

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR.joinpath('media')


# Django authentication system
# https://docs.djangoproject.com/en/2.2/topics/auth/

AUTHENTICATION_BACKENDS = (
    'axes.backends.AxesBackend',
    'django.contrib.auth.backends.ModelBackend',
)

PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    'django.contrib.auth.hashers.BCryptPasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
]


# Security
# https://docs.djangoproject.com/en/2.2/topics/security/

SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_HTTPONLY = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True

X_FRAME_OPTIONS = 'DENY'

# https://github.com/DmytroLitvinov/django-http-referrer-policy
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
REFERRER_POLICY = 'same-origin'

# https://github.com/adamchainz/django-feature-policy#setting
FEATURE_POLICY: Dict[str, Union[str, List[str]]] = {}  # noqa: WPS234


# Timeouts
# https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-EMAIL_TIMEOUT

EMAIL_TIMEOUT = 5

server/settings/components/caches.py METASEP
# Caching
# https://docs.djangoproject.com/en/2.2/topics/cache/

CACHES = {
    'default': {
        # TODO: use some other cache in production,
        # like https://github.com/jazzband/django-redis
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    },
}


# django-axes
# https://django-axes.readthedocs.io/en/latest/4_configuration.html#configuring-caches

AXES_CACHE = 'default'

server/settings/components/__init__.py METASEP
from pathlib import PurePath

from decouple import AutoConfig

# Build paths inside the project like this: BASE_DIR.joinpath('some')
# `pathlib` is better than writing: dirname(dirname(dirname(__file__)))
BASE_DIR = PurePath(__file__).parent.parent.parent.parent

# Loading `.env` files
# See docs: https://gitlab.com/mkleehammer/autoconfig
config = AutoConfig(search_path=BASE_DIR.joinpath('config'))

tests/conftest.py METASEP
"""
This module is used to provide configuration, fixtures, and plugins for pytest.

It may be also used for extending doctest's context:
1. https://docs.python.org/3/library/doctest.html
2. https://docs.pytest.org/en/latest/doctest.html
"""

import pytest


@pytest.fixture(autouse=True)
def _media_root(settings, tmpdir_factory) -> None:
    """Forces django to save media files into temp folder."""
    settings.MEDIA_ROOT = tmpdir_factory.mktemp('media', numbered=True)


@pytest.fixture(autouse=True)
def _password_hashers(settings) -> None:
    """Forces django to use fast password hashers for tests."""
    settings.PASSWORD_HASHERS = [
        'django.contrib.auth.hashers.MD5PasswordHasher',
    ]


@pytest.fixture(autouse=True)
def _auth_backends(settings) -> None:
    """Deactivates security backend from Axes app."""
    settings.AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
    )


@pytest.fixture(autouse=True)
def _debug(settings) -> None:
    """Sets proper DEBUG and TEMPLATE debug mode for coverage."""
    settings.DEBUG = False
    for template in settings.TEMPLATES:
        template['OPTIONS']['debug'] = True


@pytest.fixture()
def main_heading() -> str:
    """An example fixture containing some html fragment."""
    return '<h1>wemake-django-template</h1>'

docs/conf.py METASEP
# wemake-django-template documentation build configuration file, created by
# sphinx-quickstart on Sat Sep 30 12:42:34 2017.
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.

import os
import sys
from contextlib import suppress

import tomlkit

sys.path.insert(0, os.path.abspath('..'))

# We need this block, because
# django might be not installed, maybe we are running our
# build process in ReadTheDocs?
# https://github.com/wemake-services/wemake-django-template/issues/133
with suppress(ImportError):
    import django  # noqa: WPS433

    # Normal django setup. That's how it should be in development:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'server.settings'
    django.setup()


# -- Project information -----------------------------------------------------

def _get_project_meta():
    with open('../pyproject.toml') as pyproject:
        file_contents = pyproject.read()

    return tomlkit.parse(file_contents)['tool']['poetry']


pkg_meta = _get_project_meta()
project = str(pkg_meta['name'])
author = str(pkg_meta['authors'][0])
copyright = author  # noqa: WPS125

# The short X.Y version
version = str(pkg_meta['version'])
# The full version, including alpha/beta/rc tags
release = version


# -- General configuration ------------------------------------------------

# If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '3.3'

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.doctest',
    'sphinx.ext.todo',
    'sphinx.ext.coverage',
    'sphinx.ext.viewcode',
    'sphinx.ext.githubpages',
    'sphinx.ext.napoleon',

    # 3rd party, order matters:
    # https://github.com/wemake-services/wemake-django-template/issues/159
    'sphinx_autodoc_typehints',
]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
source_suffix = ['.rst']

# The master toctree document.
master_doc = 'index'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None

# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']

# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'

# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True


# -- Options for HTML output ----------------------------------------------

# The theme to use for HTML and HTML Help pages.  See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster'

# Theme options are theme-specific and customize the look and feel of a theme
# further.  For a list of options available for each theme, see the
# documentation.
html_theme_options = {}

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']

# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# This is required for the alabaster theme
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
html_sidebars = {
    '**': [
        'about.html',
        'navigation.html',
        'moreinfo.html',
        'searchbox.html',
    ],
}

server/apps/main/templates/main/unused/upload.html METASEP
{% extends 'main/application.html' %}

{% block content %}

<h2>Add your Experience</h2>

<form method="post" action="{% url 'main:upload' %}">
  {% csrf_token %}
  <div class="form-group">
    <label for="experience">Enter your experience</label>
    <textarea type="textarea" rows="5" class="form-control" id="experience" name="experience" placeholder="Your experience can be entered here"></textarea>

    <label for="wish_different">What would you have wished to be different?</label>
    <textarea type="textarea" rows="5" class="form-control" id="wish_different" name="wish_different" placeholder="Let us know what you would have wished to be differently in this experience."></textarea>
  </div>

  <div class="form-check">
    <input class="form-check-input" name='research' type="checkbox" value="research" id="research">
    <label class="form-check-label" for="research">
      Can be used for Research
    </label>
  </div>

  <div class="form-check">
    <input class="form-check-input" name='viewable' type="checkbox" value="viewable" id="viewable">
    <label class="form-check-label" for="viewable">
      Is viewable by others
    </label>
  </div>

  <input class="btn btn-primary" type="submit" value="Share your Experience">
</form>

{% endblock %}

server/apps/main/templates/main/unused/signup1.html METASEP
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>{{config.project_title |default:"AutSPACEs Registration on Open Humans" }}</title>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic' rel='stylesheet' type='text/css'>
    <link href='https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' rel='stylesheet' type='text/css'>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>


    <!-- Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <title>Sign Up</title>
    <style>
        body {
            height: 100vh;
        }
        .bg-light {
            background-color: rgba(149, 239, 234, 0.42);;
            margin-bottom: 0;
        }

        ul {
            list-style-type: none;
            width: 100%;
            display: flex;
            justify-content: center;
        }
        .nav-item {
            padding: 1.5em 2em 1.5em 2em;
            font-size: large;
            font-weight: bold;
        }
        .nav-link {
            color: black;
        }

        .nav-link:hover {
            text-decoration: none;
            color: black;
        }
        #project-sign-up {
            margin-left: 2em;
            font-size: large;
            margin-top: 0.5em;
        }
        .container {

            display: flex;
            flex-direction: column;
        }
        #form-check {
            display: flex;
            padding-top: 11vh;

        }
        .footer {
            background-color: gray;
            height: 10vh;
        }
        .submit {
            margin-left: 45%;
        }
        input[type="radio"]{
           margin: 0 10px 0 10px;
        }

        #question p {
            font-size: large;
        }
        .options {
            line-height: 2.5em;
            display: flex;
            flex-direction: column;
        }

    </style>
</head>
<body>
    <nav class="navbar fixed-top navbar-light bg-light">
        <ul class="navbar-nav justify-content-center">
            <li class="nav-item">
              <a class="nav-link" href="#">ABOUT</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Share</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">View</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">MyPage</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">LOGIN</a>
            </li>
          </ul>
    </nav>
    <div id="project-sign-up">
        <p>Sign Up to AutSPACE</p>
    </div>
    <form id="form-check">
        <div class="container">
            <div id="question">
                <p>If you have another connection to autism, please write it here. For example sister, researcher or friend.</p>
                <p>You can also leave this space blank.</p>
            </div>
            <div class="options">
                <div>
                    <input type="radio" name="RadioOptions" id="Radio1" value="option1">
                    <label for="explicit-label-name">Friend of Autism person </label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio2" value="option2">
                    <label for="explicit-label-name">Parent of Autism person </label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio3" value="option3">
                    <label for="explicit-label-name">Sibling of Autism person </label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio4" value="option4">
                    <label for="explicit-label-name">Other Family member of Autistic person </label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio5" value="option5">
                    <label for="explicit-label-name">Healthcare/ Medical carer of Autistic person</label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio6" value="option6">
                    <label for="explicit-label-name">Autism researcher</label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio7" value="option7">
                    <label for="explicit-label-name">Educator for Autistic people</label>
                </div>
                <div>
                    <input type="radio" name="RadioOptions" id="Radio8" value="option8">
                    <label for="explicit-label-name">Other</label>
                    <div>
                        <textarea id="otheroption" name="otheroption" rows="4" cols="50">
                            Please specify.
                        </textarea>
                    </div>
                </div>
                <div class="submit">
                    <button type="button" class="btn btn-lg btn-primary mb1 bg-greenyellow" form="form-check">CONTINUE
                    </button>
                </div>
            </div>
        </div>
    </form>

    <footer class="footer navbar-fixed-bottom">
</body>
</html>

server/apps/main/templates/main/unused/signup.html METASEP
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>{{config.project_title |default:"My Open Humans Project" }}</title>
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,700' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic' rel='stylesheet' type='text/css'>
    <link href='https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css' rel='stylesheet' type='text/css'>

    <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js'></script>


    <!-- Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <title>Sign Up</title>
    <style>
        body {
            height: 100vh;
        }
        .bg-light {
            background-color:rgba(149, 239, 234, 0.42);
            margin-bottom: 0;
        }

        ul {
            list-style-type: none;
            width: 100%;
            display: flex;
            justify-content: center;
        }
        .nav-item {
            padding: 1.5em 2em 1.5em 2em;
            font-size: large;
            font-weight: bold;
        }
        .nav-link {
            color: black;
        }

        .nav-link:hover {
            text-decoration: none;
            color: black;
        }
        #project-sign-up {
            margin-left: 2em;
            font-size: large;
            margin-top: 0.5em;
        }
        .container {
            margin: auto;
        }
        #form-check {
            display: flex;
            /* height: 50vh; */
            padding-top: 25vh;

        }
        .footer {
            background-color: gray;
            height: 10vh;
        }
        .submit {
            margin-left: 45%;
        }
        input[type="radio"]{
           margin: 0 10px 0 10px;
        }

        #question p {
            font-size: large;
        }
    </style>
</head>
<body>
    <nav class="navbar fixed-top navbar-light bg-light">
        <ul class="navbar-nav justify-content-center">
            <li class="nav-item">
              <a class="nav-link" href="#">ABOUT</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Share</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">View</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">MyPage</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">LOGIN</a>
            </li>
          </ul>
    </nav>
    <div id="project-sign-up">
        <p>Sign Up to AutSPACE</p>
    </div>
    <form id="form-check">
        <div class="container">
            <div id="question">
                <p>Are you autistic?</p>
            </div>
            <div class="options">
                <label for="explicit-label-name">YES </label>
                <input type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
                <label for="explicit-label-name">NO </label>
                <input type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
                <label for="explicit-label-name">NOT SURE </label>
                <input type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3">
                <label for="explicit-label-name">PREFER NOT TO SAY </label>
                <input type="radio" name="inlineRadioOptions" id="inlineRadio4" value="option4">
            </div>
            <div class="submit">
                <a href="{% url 'main:signup_frame4_test' %}"><button type="button" class="btn btn-primary mb1 bg-greenyellow" form="form-check">CONTINUE</button></a>
            </div>
        </div>
    </form>

    <footer class="footer navbar-fixed-bottom">
</body>
</html>

server/apps/main/templates/main/unused/public_experiences.html METASEP
{% extends 'main/application.html' %}

{% block content %}
    <h1>File List</h1>
    <p class="lead">This is a list of all public experiences</p>


        {% for experience in experiences %}

        <div class="panel panel-default">
          <div class="panel-heading">{{experience.open_humans_member.oh_id}} - {{experience.created_at}}</div>
          <div class="panel-body">
            <h5>Experience</h5>
            {{experience.experience_text}}
            <h5>What would you have liked to be different?</h5>
            {{experience.difference_text}}
          </div>
        </div>

        {% endfor %}

{% endblock %}

server/apps/main/templates/main/unused/overview.html METASEP
{% extends 'main/application.html' %}

{% block content %}

      <h1>Manage your {{config.project_title}} data.</h1>
      <p class="lead">
        Thank you! We logged you in through <i>Open Humans</i>.
      </p>
      <div class="row">
        <div class="col-md-6">
          You can now use this project to add or remove your Experiences.
        </div>
        <div class="col-md-6">
          <div class="panel panel-default">
            <div class="panel-body">


              {% include 'main/partials/upload_form.html' %}
            </div>
          </div>
          <p>
            You can also take a look at the <a href="{% url 'main:list' %}">file list</a>.
          </p>
        </div>
      </div>

{% endblock %}

server/apps/main/templates/main/unused/moderate_public_experiences_old.html METASEP
{% extends 'main/application.html' %}

{% block content %}
    <h1>File List</h1>
    <p class="lead">This is a list of all public experiences</p>


        {% for experience in experiences %}

        <div class="panel panel-default">
          <div class="panel-heading">{{experience.open_humans_member.oh_id}} - {{experience.created_at}}</div>
          <div class="panel-body">
            <h5>Experience</h5>
            {{experience.experience_text}}
            <h5>What would you have liked to be different?</h5>
            {{experience.difference_text}}
          </div>
        </div>

        <p><a href="{%url 'main:review_experience' experience.experience_id %}" class="btn btn-success">Approve</a></p>

        {% endfor %}

{% endblock %}

server/apps/main/templates/main/unused/list.html METASEP
{% extends 'main/application.html' %}

{% block content %}
    <h1>Your Experiences</h1>
    <p class="lead">This is a list of files you have uploaded to OpenHumans using this project.</p>

    {% if files|length %}
    <table class="table table-striped" >
        <thead>
            <tr>
                <th style="width: 10%;">Name</th>
                <th style="width: 40%;">Description</th>
                <th style="width: 40%;">Tags</th>
            </tr>
        </thead>
        <tbody>
        {% for file in files %}
        <tr>
            <td>{{ file.basename }}</td>
            <td>{{ file.metadata.description }}</td>
            <td>
                {% for tag in file.metadata.tags %}
                  {%if tag == 'viewable' %}
                  <a href="{%url 'main:make_non_viewable' file.id file.metadata.uuid%}"><span class="badge">{{ tag }}</span></a>
                  {%elif tag == 'not public'%}
                    <a href="{%url 'main:make_viewable' file.id file.metadata.uuid%}"><span class="badge">{{ tag }}</span></a>
                  {%elif tag == 'research'%}
                    <a href="{%url 'main:make_non_research' file.id file.metadata.uuid%}"><span class="badge">{{ tag }}</span></a>
                  {%elif tag == 'non-research'%}
                    <a href="{%url 'main:make_research' file.id file.metadata.uuid%}"><span class="badge">{{ tag }}</span></a>
                  {%else%}
                    <span class="badge">{{ tag }}</span>
                  {%endif%}
                {% endfor %}
            </td>
            <td>
                <a href="{{ file.download_url }}" class="btn btn-secondary btn-sm text-success" target="_blank">Download</a>
            </td>
            <td>
              <form action="{% url 'openhumans:delete_file'  %}" method="post">{% csrf_token %}
                <input type="text" name="file_id" value={{ file.id }}  style="display:none"/>
                <input type="text" name="next" value="{% url 'main:list' %}" style="display:none"/>
                <button type="submit">Delete</button>
              </form>
            </td>
        </tr>
        {% endfor %}
        </tbody>
    </table>

    <form action="{% url 'openhumans:delete_all_files' %}" method="post">{% csrf_token %}
        <input type="text" name="next" value="{% url 'main:list' %}" style="display:none"/>
        <button type="submit">Delete  all files</button>
    </form>

    {% else %}
    <div class="text-center">
        <p class="lead">No files uploaded</p>
    </div>
    {% endif %}

{% endblock %}

server/apps/main/templates/main/unused/index.html METASEP
{% extends 'main/application.html' %}

{% block content %}

      <div class="jumbotron">
        <h3>Building Accessible Community Environment<h3>
        <h1>Welcome to AutSPACE</h1>
        <p>
          This website exists for autistic people to share stories about how our senses affect us in our daily lives.
          <a href="https://github.com/OpenHumans/django-open-humans">django-open-humans</a>.
        </p>
      </div>

      <div class="row">
        <div class="col-md-6">
          <p>
            Configure this app by copying the <code>env.sample</code> file to
            <code>.env</code> and setting these as needed. <b>You will need to
            create a project in Open Humans</b> to get a "Client ID" and
            "Client secret" for your own project, and put these in your local
            <code>.env</code> file.
          </p>
          <p>
            The code for this site can be found on Github at:
            <a href="https://github.com/OpenHumans/oh-app-demo">https://github.com/OpenHumans/oh-app-demo</a>.
            You're welcome to use it as a template or reference for how a
            Django-based website can connect and interact with Open Humans
            member accounts.
          </p>
        </div>
        <div class="col-md-6">
          <h2>How it works (once configured)</h2>
          <ol>
            <li><b>Log in to your Open Humans account</b><br></li>
            <li><b>Authorize your version of this project on <i>Open Humans</i></b><br>
              This authorizes this app to deposit your archive into your Open Humans account.</li>
            <li><b>Upload your data.</b><br>
              You will be redirected back to this site and can then
              upload your data.
              You'll be able to
              <a href="{{ oh_proj_page }}">access &amp; manage your data on
              Open Humans</a>.
            </li>
          </ol>

          {% if auth_url %}
          <a class="btn btn-primary btn-lg"
            href="{{ auth_url }}">
              Get started / Login
          </a>
          {% else %}
          <b>
            But first you need to set up your <code>.env</code>!
          </b>
          {% endif %}
        </div>
      </div>


{%endblock%}

server/apps/main/templates/main/unused/complete.html METASEP
{% extends 'main/application.html' %}

{% block content %}

      <h1>Now you can uploading a file to Open Humans with your project!</h1>
      <p class="lead">
        Thank you! We got your authorization to connect to <i>Open Humans</i>.
      </p>
      <div class="row">
        <div class="col-md-6">
          Upload a file.
        </div>
        <div class="col-md-6">
          <div class="panel panel-default">
            <div class="panel-body">
              {% include 'main/partials/upload_form.html' %}
            </div>
          </div>
          <p>
            You can also visit <a href="{{ oh_proj_page }}">this project's page on Open Humans </a>
            to see any data you've previously uploaded.
          </p>
        </div>
      </div>

{% endblock %}

server/apps/main/templates/main/partials/upload_form.html METASEP
<h2>Add your Experience</h2>

<form method="post" action="{% url 'main:upload' %}">
  {% csrf_token %}
  <div class="form-group">
    <label for="experience">Enter your experience</label>
    <textarea
      type="textarea"
      rows="5"
      class="form-control"
      id="experience"
      name="experience"
      placeholder="Your experience can be entered here"
    ></textarea>

    <label for="wish_different"
      >What would you have wished to be different?</label
    >
    <textarea
      type="textarea"
      rows="5"
      class="form-control"
      id="wish_different"
      name="wish_different"
      placeholder="Let us know what you would have wished to be differently in this experience."
    ></textarea>
  </div>

  <div class="form-check">
    <input
      class="form-check-input"
      name="research"
      type="checkbox"
      value="research"
      id="research"
    />
    <label class="form-check-label" for="research">
      Can be used for Research
    </label>
  </div>

  <div class="form-check">
    <input
      class="form-check-input"
      name="viewable"
      type="checkbox"
      value="viewable"
      id="viewable"
    />
    <label class="form-check-label" for="viewable">
      Is viewable by others
    </label>
  </div>

  <input class="btn btn-primary" type="submit" value="Share your Experience" />
</form>

server/apps/main/templates/main/partials/navigation.html METASEP
 {% load static %}
 {% load custom_tags %}
<link href="{% static '/css/navigation_light.css' %}" rel="stylesheet" id="mystylesheet">
  <div class="container-fluid nav-section">
  <nav class="navbar navbar-expand-xl navbar-dark">
      <a class="nav-content navbar-brand" href="#">AutSPACEs</a>
      <button aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation" class="navbar-toggler"
              data-target="#navbarText"
              data-toggle="collapse" type="button">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarText">
        <ul class="navbar-nav">
          <li>
            <a class="nav-content nav-item nav-link" href="{% url 'main:overview' %}">Home</a>
          </li>
          <li>
            <a class="nav-content nav-item nav-link" href="{% url 'main:what_autism_is' %}">What Autism is</a>
          </li>
          {% if user.is_authenticated %}
          <li class="nav-item dropdown" style="padding: 0 0">
            <a class="nav-link dropdown-toggle nav-content" href="#" id="navbarDropdownMenuLink" role="button"
              data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" style="padding: 0 25px">
            Experiences
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
              <a class="dropdown-item" href="{% url 'main:public_experiences' %}">View Stories</a>
              <a class="dropdown-item" href="{% url 'main:share_exp' %}">Share Stories</a>
              {% is_moderator user as moderator %}
              {% if moderator %}
              <a class="dropdown-item" href="{% url 'main:moderate_public_experiences' %}">Moderate</a>
              {% endif %}
            </div>
          </li>
          <li>
            <a class="nav-content nav-item nav-link" href="{% url 'main:my_stories' %}">My Stories</a>
          </li>
          {% else %}
          <li>
            <a class="nav-content nav-item nav-link" href="{% url 'main:public_experiences' %}">View Stories</a>
          </li>
          {% endif %}
          <li>
            <a class="nav-content nav-item nav-link" href="{% url 'main:about_us' %}">About Us</a>
          </li>
        </ul>
      </div>


      {% if user.is_authenticated %}
        <form action="{% url 'main:logout' %}" method="post">
          {% csrf_token %}
          <input class="nav-content nav-item btn btn-light btn-lg" type="submit" value="Log out">
        </form>
      {% elif not page_status == "registration" %}
        <a class="nav-content nav-item nav-link log-link" style="color: #fff" href="{{ auth_url }}">Log In</a>
        <a href="{% url 'main:registration' %}" class="nav-content nav-item btn btn-lg btn-light">Register</a>
      {% endif %}
    </nav>
</div>

server/apps/main/templates/main/partials/moderatIon_status.html METASEP

server/apps/main/templates/main/partials/jquery.html METASEP
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

server/apps/main/templates/main/partials/footer.html METASEP
{% load static %}


  <div class="row">
  <div class="col-lg-3 footer-column">
      <img class="footer-image" src="{% static "/images/autistica.png" %}" width="65" height="40" alt="Autistica
  Logo" />
      <img class="footer-image" src="{% static "/images/alanturing.png" %}" width="75" height="40" alt="Alan Turing Institute
      Logo" />
      <p class="footer-text">©Copyright 2022 AutSPACEs</p>
      <p class="footer-text"><a href="https://twitter.com/AutSpaces">@AutSpaces</a> on Twitter</p>
    </div>
    <div class="col-lg-3 footer-text">
      <h5>Allied Organisations</h5>
      <p>Autistica</p>
      <p>National Autistic Society</p>
      <p>Samaritans</p>
    </div>

    <div class="col-lg-3 footer-text">
      <h5>Policies</h5>
      <p>Ethics</p>
      <p>Terms of Use</p>
      <p>Code of Conduct</p>
    </div>

    <div class="col-lg-3 footer-text">
    <h5>About Us</h5>
      <p>GitHub</p>
      <p>Glossary</p>
      <p>Publications</p>
  </div>
  </div>

server/apps/main/templates/main/partials/dummy_stories.html METASEP
<tr>
    <th scope="row">1</th>
    <td>Traffic Lights</td>
    <td>Self</td>
    <td>09-11-2021</td>
    <td>14-11-2021</td>
    <td>Accepted</td>
  </tr>
  <tr>
    <th scope="row">2</th>
    <td>Taking subways in London</td>
    <td>For autistic friend</td>
    <td>09-11-2021</td>
    <td>14-11-2021</td>
    <td>Moderating</td>
  </tr>
  <tr>
    <th scope="row">3</th>
    <td>Shopping in a market</td>
    <td>Self</td>
    <td>09-11-2021</td>
    <td>14-11-2021</td>
    <td>Re-moderating</td>
  </tr>
setup.cfg METASEP
# All configuration for plugins and other utils is defined here.
# Read more about `setup.cfg`:
# https://docs.python.org/3/distutils/configfile.html


[flake8]
# flake8 configuration:
# https://flake8.pycqa.org/en/latest/user/configuration.html
format = wemake
show-source = True
statistics = False
doctests = True
enable-extensions = G

# Flake plugins:
max-line-length = 80
max-complexity = 6

# Excluding some directories:
exclude = .git,__pycache__,.venv,.eggs,*.egg

# Disable some pydocstyle checks:
ignore = D100, D104, D106, D401, X100, W504, RST303, RST304, DAR103, DAR203

# Docs: https://github.com/snoack/flake8-per-file-ignores
# You can completely or partially disable our custom checks,
# to do so you have to ignore `WPS` letters for all python files:
per-file-ignores =
  # Allow `__init__.py` with logic for configuration:
  server/settings/*.py: WPS226, WPS407, WPS412, WPS432
  # Allow to have magic numbers inside migrations and wrong module names:
  server/*/migrations/*.py: WPS102, WPS114, WPS432
  # Enable `assert` keyword and magic numbers for tests:
  tests/*.py: S101, WPS432


[isort]
# isort configuration:
# https://github.com/timothycrosley/isort/wiki/isort-Settings
include_trailing_comma = true
use_parentheses = true
# See https://github.com/timothycrosley/isort#multi-line-output-modes
multi_line_output = 3
default_section = FIRSTPARTY
line_length = 80


[darglint]
# darglint configuration:
# https://github.com/terrencepreilly/darglint
strictness = long


[tool:pytest]
# Django configuration:
# https://pytest-django.readthedocs.io/en/latest/
DJANGO_SETTINGS_MODULE = server.settings

# Timeout for tests, so they can not take longer
# than this amount of seconds.
# You should adjust this value to be as low as possible.
# Configuration:
# https://pypi.org/project/pytest-timeout/
timeout = 5

# Directories that are not visited by pytest collector:
norecursedirs = *.egg .eggs dist build docs .tox .git __pycache__

# You will need to measure your tests speed with `-n auto` and without it,
# so you can see whether it gives you any performance gain, or just gives
# you an overhead. See `docs/template/development-process.rst`.
addopts =
  --strict
  --strict-config
  --doctest-modules
  --fail-on-template-vars
  --dup-fixtures
  # Output:
  --tb=short
  # Parallelism:
  # -n auto
  # --boxed
  # Coverage:
  --cov=server
  --cov=tests
  --cov-branch
  --cov-report=term-missing:skip-covered
  --cov-report=html
  --cov-fail-under=100


[coverage:run]
plugins =
    django_coverage_plugin


[mypy]
# Mypy configuration:
# https://mypy.readthedocs.io/en/latest/config_file.html
allow_redefinition = False
check_untyped_defs = True
disallow_untyped_decorators = True
disallow_any_explicit = True
disallow_any_generics = True
disallow_untyped_calls = True
ignore_errors = False
ignore_missing_imports = True
implicit_reexport = False
local_partial_types = True
strict_optional = True
strict_equality = True
no_implicit_optional = True
warn_unused_ignores = True
warn_redundant_casts = True
warn_unused_configs = True
warn_unreachable = True
warn_no_return = True

plugins =
  mypy_django_plugin.main

[mypy.plugins.django-stubs]
django_settings_module = server.settings

[mypy-server.apps.*.migrations.*]
# Django migrations should not produce any errors:
ignore_errors = True

[mypy-server.apps.*.models]
# FIXME: remove this line, when `django-stubs` will stop
# using `Any` inside.
disallow_any_explicit = False


[doc8]
# doc8 configuration:
# https://github.com/pycqa/doc8
ignore-path = docs/_build
max-line-length = 80
sphinx = True

pyproject.toml METASEP
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"


[tool.nitpick]
style = "https://raw.githubusercontent.com/wemake-services/wemake-python-styleguide/master/styles/nitpick-style-wemake.toml"


[tool.poetry]
name = "autspaces"
description = "Autistica Turing Citizen Science Platform"
version = "0.1.0"
readme = "README.md"
authors = ["test.com"]


[tool.poetry.dependencies]
python = "3.8.6"

django = "^2.2.16"
django-split-settings = "^1.0"
django-axes = "^5.10"
django-csp = "^3.7"
django-health-check = "^3.16"
django-http-referrer-policy = "^1.1"
django-feature-policy = "^3.6"
django-stubs-ext = "^0.1"

psycopg2-binary = "^2.8"
gunicorn = "^20.0"
python-decouple = "^3.3"
bcrypt = "^3.2"
structlog = "^20.1"
django-open-humans = "^0.1.6"


[tool.poetry.dev-dependencies]
django-debug-toolbar = "^3.2"
django-querycount = "^0.7"
django-migration-linter = "^2.4"
django-extra-checks = "^0.8"
django-coverage-plugin = "^1.8"
nplusone = "^1.0"

wemake-python-styleguide = "^0.14"
flake8-pytest-style = "^1.3"
flake8-django = "^1.1"
flake8-logging-format = "^0.6"
nitpick = "^0.23"

pytest = "^6.2"
pytest-django = "^4.1"
pytest-cov = "^2.10"
pytest-randomly = "^3.4"
pytest-deadfixtures = "^2.2"
pytest-testmon = "^1.0"
pytest-timeout = "^1.4"
django-test-migrations = "^1.1"
hypothesis = "^5.43"

mypy = "^0.790"
django-stubs = "^1.7"

sphinx = "^3.4"
sphinx-autodoc-typehints = "^1.11"
tomlkit = "^0.7"
doc8 = "^0.8"

yamllint = "^1.25"
safety = "^1.10"
dotenv-linter = "^0.2"
polint = "^0.4"
dennis = "^0.9"
dump-env = "^1.2"
ipython = "^7.19"

poetry.lock METASEP
[[package]]
name = "alabaster"
version = "0.7.12"
description = "A configurable sidebar-enabled Sphinx theme"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "appdirs"
version = "1.4.4"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "appnope"
version = "0.1.2"
description = "Disable App Nap on macOS >= 10.9"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "arrow"
version = "0.17.0"
description = "Better dates & times for Python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
python-dateutil = ">=2.7.0"

[[package]]
name = "astor"
version = "0.8.1"
description = "Read/rewrite/write Python ASTs"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"

[[package]]
name = "atomicwrites"
version = "1.4.0"
description = "Atomic file writes."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "attrs"
version = "20.3.0"
description = "Classes Without Boilerplate"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.extras]
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
docs = ["furo", "sphinx", "zope.interface"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]

[[package]]
name = "babel"
version = "2.9.0"
description = "Internationalization utilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.dependencies]
pytz = ">=2015.7"

[[package]]
name = "backcall"
version = "0.2.0"
description = "Specifications for callback functions passed in to an API"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "bandit"
version = "1.7.0"
description = "Security oriented static analyser for python code."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""}
GitPython = ">=1.0.1"
PyYAML = ">=5.3.1"
six = ">=1.10.0"
stevedore = ">=1.20.0"

[[package]]
name = "bcrypt"
version = "3.2.0"
description = "Modern password hashing for your software and your servers"
category = "main"
optional = false
python-versions = ">=3.6"

[package.dependencies]
cffi = ">=1.1"
six = ">=1.4.1"

[package.extras]
tests = ["pytest (>=3.2.1,!=3.3.0)"]
typecheck = ["mypy"]

[[package]]
name = "blinker"
version = "1.4"
description = "Fast, simple object-to-object and broadcast signaling"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "certifi"
version = "2020.12.5"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = "*"

[[package]]
name = "cffi"
version = "1.14.4"
description = "Foreign Function Interface for Python calling C code."
category = "main"
optional = false
python-versions = "*"

[package.dependencies]
pycparser = "*"

[[package]]
name = "chardet"
version = "4.0.0"
description = "Universal encoding detector for Python 2 and 3"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "click"
version = "7.1.2"
description = "Composable command line interface toolkit"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "click-default-group"
version = "1.2.2"
description = "Extends click.Group to invoke a command without explicit subcommand name"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
click = "*"

[[package]]
name = "colorama"
version = "0.4.4"
description = "Cross-platform colored terminal text."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "coverage"
version = "5.3.1"
description = "Code coverage measurement for Python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"

[package.extras]
toml = ["toml"]

[[package]]
name = "darglint"
version = "1.5.8"
description = "A utility for ensuring Google-style docstrings stay up to date with the source code."
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[[package]]
name = "decorator"
version = "4.4.2"
description = "Decorators for Humans"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"

[[package]]
name = "dennis"
version = "0.9"
description = "Utilities for working with PO and POT files to ease development and improve localization quality"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
click = ">=6"
polib = ">=1.0.8"

[[package]]
name = "dictdiffer"
version = "0.8.1"
description = "Dictdiffer is a library that helps you to diff and patch dictionaries."
category = "dev"
optional = false
python-versions = "*"

[package.extras]
all = ["Sphinx (>=1.4.4)", "sphinx-rtd-theme (>=0.1.9)", "check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "tox (>=3.7.0)", "numpy (>=1.11.0)"]
docs = ["Sphinx (>=1.4.4)", "sphinx-rtd-theme (>=0.1.9)"]
numpy = ["numpy (>=1.11.0)"]
tests = ["check-manifest (>=0.25)", "coverage (>=4.0)", "isort (>=4.2.2)", "mock (>=1.3.0)", "pydocstyle (>=1.0.0)", "pytest-cov (>=1.8.0)", "pytest-pep8 (>=1.0.6)", "pytest (>=2.8.0)", "tox (>=3.7.0)"]

[[package]]
name = "django"
version = "2.2.17"
description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
category = "main"
optional = false
python-versions = ">=3.5"

[package.dependencies]
pytz = "*"
sqlparse = ">=0.2.2"

[package.extras]
argon2 = ["argon2-cffi (>=16.1.0)"]
bcrypt = ["bcrypt"]

[[package]]
name = "django-axes"
version = "5.12.0"
description = "Keep track of failed login attempts in Django-powered sites."
category = "main"
optional = false
python-versions = "~=3.6"

[package.dependencies]
django = ">=2.2"
django-ipware = ">=3,<4"

[[package]]
name = "django-coverage-plugin"
version = "1.8.0"
description = "Django template coverage.py plugin"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
coverage = "*"
six = ">=1.4.0"

[[package]]
name = "django-csp"
version = "3.7"
description = "Django Content Security Policy support."
category = "main"
optional = false
python-versions = "*"

[package.dependencies]
Django = ">=1.8"

[package.extras]
jinja2 = ["jinja2 (>=2.9.6)"]
tests = ["pytest (<4.0)", "pytest-django", "pytest-flakes (==1.0.1)", "pytest-pep8 (==1.0.6)", "pep8 (==1.4.6)", "mock (==1.0.1)", "six (==1.12.0)", "jinja2 (>=2.9.6)"]

[[package]]
name = "django-debug-toolbar"
version = "3.2"
description = "A configurable set of panels that display various debug information about the current request/response."
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
Django = ">=2.2"
sqlparse = ">=0.2.0"

[[package]]
name = "django-extra-checks"
version = "0.8.0"
description = "Collection of useful checks for Django Checks Framework"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.extras]
dev = ["pytest", "pytest-django", "pytest-cov", "django", "djangorestframework", "django-stubs (==1.5.0)", "djangorestframework-stubs (==1.2.0)", "flake8 (>=3.8)", "flake8-bugbear", "pre-commit", "isort (>=5.0)", "pdbpp", "tox"]

[[package]]
name = "django-feature-policy"
version = "3.6.0"
description = "Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app."
category = "main"
optional = false
python-versions = ">=3.6"

[package.dependencies]
Django = ">=2.2"

[[package]]
name = "django-health-check"
version = "3.16.2"
description = "Run checks on services like databases, queue servers, celery processes, etc."
category = "main"
optional = false
python-versions = "*"

[package.dependencies]
django = ">=1.11"

[[package]]
name = "django-http-referrer-policy"
version = "1.1.1"
description = "django-http-referrer-policy provides a middleware class implementing the Referrer-Policy header for Django-powered sites."
category = "main"
optional = false
python-versions = ">=3.5.0"

[package.dependencies]
Django = ">=1.11"

[[package]]
name = "django-ipware"
version = "3.0.2"
description = "A Django utility application that returns client's real IP address"
category = "main"
optional = false
python-versions = "*"

[[package]]
name = "django-migration-linter"
version = "2.4.0"
description = "Detect backward incompatible migrations for your django project"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
appdirs = ">=1.4.3"
django = ">=1.11"
six = ">=1.14.0"

[package.extras]
test = ["tox (>=3.15.2)", "mysqlclient (>=1.4.6)", "psycopg2-binary (>=2.8.5)", "django-add-default-value (>=0.4.0)", "mock (>=3.0.5)", "backports.tempfile (>=1.0)"]

[[package]]
name = "django-open-humans"
version = "0.1.6"
description = "Django module for interacting with Open Humans"
category = "main"
optional = false
python-versions = "*"

[package.dependencies]
django = ">=2.1"
open-humans-api = ">=0.2.4"

[[package]]
name = "django-querycount"
version = "0.7.0"
description = "Middleware that Prints the number of DB queries to the runserver console."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "django-split-settings"
version = "1.0.1"
description = "Organize Django settings into multiple files and directories. Easily override and modify settings. Use wildcards and optional settings files."
category = "main"
optional = false
python-versions = ">=3.6,<4.0"

[[package]]
name = "django-stubs"
version = "1.7.0"
description = "Mypy stubs for Django"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
django = "*"
mypy = ">=0.790"
typing-extensions = "*"

[[package]]
name = "django-stubs-ext"
version = "0.1.0"
description = "Monkey-patching and extensions for django-stubs"
category = "main"
optional = false
python-versions = ">=3.6"

[package.dependencies]
django = "*"

[[package]]
name = "django-test-migrations"
version = "1.1.0"
description = "Test django schema and data migrations, including ordering"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
typing_extensions = ">=3.7.4,<4.0.0"

[[package]]
name = "doc8"
version = "0.8.1"
description = "Style checker for Sphinx (or other) RST documentation"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
chardet = "*"
docutils = "*"
Pygments = "*"
restructuredtext-lint = ">=0.7"
six = "*"
stevedore = "*"

[[package]]
name = "docopt"
version = "0.6.2"
description = "Pythonic argument parser, that will make you smile"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "docutils"
version = "0.16"
description = "Docutils -- Python Documentation Utilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "dotenv-linter"
version = "0.2.0"
description = "Linting dotenv files like a charm!"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
click = ">=6,<8"
click_default_group = ">=1.2,<2.0"
ply = ">=3.11,<4.0"
typing_extensions = ">=3.6,<4.0"

[[package]]
name = "dparse"
version = "0.5.1"
description = "A parser for Python dependency files"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
packaging = "*"
pyyaml = "*"
toml = "*"

[package.extras]
pipenv = ["pipenv"]

[[package]]
name = "dump-env"
version = "1.2.0"
description = "A utility tool to create .env files"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[[package]]
name = "eradicate"
version = "1.0"
description = "Removes commented-out code."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "flake8"
version = "3.8.4"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"

[package.dependencies]
mccabe = ">=0.6.0,<0.7.0"
pycodestyle = ">=2.6.0a1,<2.7.0"
pyflakes = ">=2.2.0,<2.3.0"

[[package]]
name = "flake8-bandit"
version = "2.1.2"
description = "Automated security testing with bandit and flake8."
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
bandit = "*"
flake8 = "*"
flake8-polyfill = "*"
pycodestyle = "*"

[[package]]
name = "flake8-broken-line"
version = "0.2.1"
description = "Flake8 plugin to forbid backslashes for line breaks"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
flake8 = ">=3.5,<4.0"

[[package]]
name = "flake8-bugbear"
version = "19.8.0"
description = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
attrs = "*"
flake8 = ">=3.0.0"

[[package]]
name = "flake8-commas"
version = "2.0.0"
description = "Flake8 lint for trailing commas."
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = ">=2,<4.0.0"

[[package]]
name = "flake8-comprehensions"
version = "3.3.1"
description = "A flake8 plugin to help you write better list/set/dict comprehensions."
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
flake8 = ">=3.0,<3.2.0 || >3.2.0,<4"

[[package]]
name = "flake8-debugger"
version = "3.2.1"
description = "ipdb/pdb statement checker plugin for flake8"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = ">=1.5"
pycodestyle = "*"

[[package]]
name = "flake8-django"
version = "1.1.1"
description = "Plugin to catch bad style specific to Django Projects"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = "*"

[[package]]
name = "flake8-docstrings"
version = "1.5.0"
description = "Extension for flake8 which uses pydocstyle to check docstrings"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = ">=3"
pydocstyle = ">=2.1"

[[package]]
name = "flake8-eradicate"
version = "0.3.0"
description = "Flake8 plugin to find commented out code"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
attrs = "*"
eradicate = ">=1.0,<2.0"
flake8 = ">=3.5,<4.0"

[[package]]
name = "flake8-isort"
version = "3.0.1"
description = "flake8 plugin that integrates isort ."
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = ">=3.2.1,<4"
isort = {version = ">=4.3.5,<5", extras = ["pyproject"]}
testfixtures = ">=6.8.0,<7"

[package.extras]
test = ["pytest (>=4.0.2,<6)"]

[[package]]
name = "flake8-logging-format"
version = "0.6.0"
description = "Flake8 extension to validate (lack of) logging format strings"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "flake8-plugin-utils"
version = "1.3.1"
description = "The package provides base classes and utils for flake8 plugin writing"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[[package]]
name = "flake8-polyfill"
version = "1.0.2"
description = "Polyfill package for Flake8 plugins"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = "*"

[[package]]
name = "flake8-pytest-style"
version = "1.3.0"
description = "A flake8 plugin checking common style issues or inconsistencies with pytest-based tests."
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
flake8-plugin-utils = ">=1.3.1,<2.0.0"

[[package]]
name = "flake8-quotes"
version = "2.1.2"
description = "Flake8 lint for quotes."
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = "*"

[[package]]
name = "flake8-rst-docstrings"
version = "0.0.12"
description = "Python docstring reStructuredText (RST) validator"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = ">=3.0.0"
restructuredtext_lint = "*"

[[package]]
name = "flake8-string-format"
version = "0.2.3"
description = "string format checker, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8 = "*"

[[package]]
name = "gitdb"
version = "4.0.5"
description = "Git Object Database"
category = "dev"
optional = false
python-versions = ">=3.4"

[package.dependencies]
smmap = ">=3.0.1,<4"

[[package]]
name = "gitpython"
version = "3.1.12"
description = "Python Git Library"
category = "dev"
optional = false
python-versions = ">=3.4"

[package.dependencies]
gitdb = ">=4.0.1,<5"

[[package]]
name = "gunicorn"
version = "20.0.4"
description = "WSGI HTTP Server for UNIX"
category = "main"
optional = false
python-versions = ">=3.4"

[package.extras]
eventlet = ["eventlet (>=0.9.7)"]
gevent = ["gevent (>=0.13)"]
setproctitle = ["setproctitle"]
tornado = ["tornado (>=0.2)"]

[[package]]
name = "humanfriendly"
version = "9.1"
description = "Human friendly output for text interfaces using Python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
pyreadline = {version = "*", markers = "sys_platform == \"win32\""}

[[package]]
name = "hypothesis"
version = "5.49.0"
description = "A library for property-based testing"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
attrs = ">=19.2.0"
sortedcontainers = ">=2.1.0,<3.0.0"

[package.extras]
all = ["black (>=19.10b0)", "click (>=7.0)", "django (>=2.2)", "dpcontracts (>=0.4)", "lark-parser (>=0.6.5)", "libcst (>=0.3.16)", "numpy (>=1.9.0)", "pandas (>=0.25)", "pytest (>=4.3)", "python-dateutil (>=1.4)", "pytz (>=2014.1)", "redis (>=3.0.0)", "importlib-resources (>=3.3.0)", "importlib-metadata", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2020.4)"]
cli = ["click (>=7.0)", "black (>=19.10b0)"]
codemods = ["libcst (>=0.3.16)"]
dateutil = ["python-dateutil (>=1.4)"]
django = ["pytz (>=2014.1)", "django (>=2.2)"]
dpcontracts = ["dpcontracts (>=0.4)"]
ghostwriter = ["black (>=19.10b0)"]
lark = ["lark-parser (>=0.6.5)"]
numpy = ["numpy (>=1.9.0)"]
pandas = ["pandas (>=0.25)"]
pytest = ["pytest (>=4.3)"]
pytz = ["pytz (>=2014.1)"]
redis = ["redis (>=3.0.0)"]
zoneinfo = ["importlib-resources (>=3.3.0)", "backports.zoneinfo (>=0.2.1)", "tzdata (>=2020.4)"]

[[package]]
name = "identify"
version = "1.5.13"
description = "File identification library for Python"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"

[package.extras]
license = ["editdistance"]

[[package]]
name = "idna"
version = "2.10"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "imagesize"
version = "1.2.0"
description = "Getting image size from png/jpeg/jpeg2000/gif file"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "ipython"
version = "7.19.0"
description = "IPython: Productive Interactive Computing"
category = "dev"
optional = false
python-versions = ">=3.7"

[package.dependencies]
appnope = {version = "*", markers = "sys_platform == \"darwin\""}
backcall = "*"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
jedi = ">=0.10"
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
pickleshare = "*"
prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0"
pygments = "*"
traitlets = ">=4.2"

[package.extras]
all = ["Sphinx (>=1.3)", "ipykernel", "ipyparallel", "ipywidgets", "nbconvert", "nbformat", "nose (>=0.10.1)", "notebook", "numpy (>=1.14)", "pygments", "qtconsole", "requests", "testpath"]
doc = ["Sphinx (>=1.3)"]
kernel = ["ipykernel"]
nbconvert = ["nbconvert"]
nbformat = ["nbformat"]
notebook = ["notebook", "ipywidgets"]
parallel = ["ipyparallel"]
qtconsole = ["qtconsole"]
test = ["nose (>=0.10.1)", "requests", "testpath", "pygments", "nbformat", "ipykernel", "numpy (>=1.14)"]

[[package]]
name = "ipython-genutils"
version = "0.2.0"
description = "Vestigial utilities from IPython"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "isort"
version = "4.3.21"
description = "A Python utility / library to sort Python imports."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.dependencies]
toml = {version = "*", optional = true, markers = "extra == \"pyproject\""}

[package.extras]
pipfile = ["pipreqs", "requirementslib"]
pyproject = ["toml"]
requirements = ["pipreqs", "pip-api"]
xdg_home = ["appdirs (>=1.4.0)"]

[[package]]
name = "jedi"
version = "0.18.0"
description = "An autocompletion tool for Python that can be used for text editors."
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
parso = ">=0.8.0,<0.9.0"

[package.extras]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["Django (<3.1)", "colorama", "docopt", "pytest (<6.0.0)"]

[[package]]
name = "jinja2"
version = "2.11.2"
description = "A very fast and expressive template engine."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
MarkupSafe = ">=0.23"

[package.extras]
i18n = ["Babel (>=0.8)"]

[[package]]
name = "jmespath"
version = "0.10.0"
description = "JSON Matching Expressions"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"

[[package]]
name = "markupsafe"
version = "1.1.1"
description = "Safely add untrusted strings to HTML/XML markup."
category = "dev"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"

[[package]]
name = "marshmallow"
version = "3.10.0"
description = "A lightweight library for converting complex datatypes to and from native Python datatypes."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
dev = ["pytest", "pytz", "simplejson", "mypy (==0.790)", "flake8 (==3.8.4)", "flake8-bugbear (==20.11.1)", "pre-commit (>=2.4,<3.0)", "tox"]
docs = ["sphinx (==3.3.1)", "sphinx-issues (==1.2.0)", "alabaster (==0.7.12)", "sphinx-version-warning (==1.1.2)", "autodocsumm (==0.2.2)"]
lint = ["mypy (==0.790)", "flake8 (==3.8.4)", "flake8-bugbear (==20.11.1)", "pre-commit (>=2.4,<3.0)"]
tests = ["pytest", "pytz", "simplejson"]

[[package]]
name = "marshmallow-polyfield"
version = "5.9"
description = "An unofficial extension to Marshmallow to allow for polymorphic fields"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
marshmallow = ">=3.0.0b10"

[[package]]
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "more-itertools"
version = "8.6.0"
description = "More routines for operating on iterables, beyond itertools"
category = "dev"
optional = false
python-versions = ">=3.5"

[[package]]
name = "mypy"
version = "0.790"
description = "Optional static typing for Python"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
mypy-extensions = ">=0.4.3,<0.5.0"
typed-ast = ">=1.4.0,<1.5.0"
typing-extensions = ">=3.7.4"

[package.extras]
dmypy = ["psutil (>=4.0)"]

[[package]]
name = "mypy-extensions"
version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "nitpick"
version = "0.23.1"
description = "Flake8 plugin to enforce the same lint configuration (flake8, isort, mypy, pylint) across multiple Python projects"
category = "dev"
optional = false
python-versions = ">=3.5,<4.0"

[package.dependencies]
attrs = "*"
click = "*"
dictdiffer = "*"
flake8 = ">=3.0.0"
identify = "*"
jmespath = "*"
marshmallow = ">=3.0.0b10"
marshmallow-polyfield = ">=5.7,<6.0"
more-itertools = "*"
pluggy = "*"
python-slugify = "*"
requests = "*"
"ruamel.yaml" = "*"
sortedcontainers = "*"
toml = "*"

[package.extras]
lint = ["pylint"]
test = ["pytest", "responses", "testfixtures"]
doc = ["sphinx", "sphinx-rtd-theme"]

[[package]]
name = "nplusone"
version = "1.0.0"
description = "Detecting the n+1 queries problem in Python"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
blinker = ">=1.3"
six = ">=1.9.0"

[[package]]
name = "open-humans-api"
version = "0.2.9"
description = "Tools for working with Open Humans APIs"
category = "main"
optional = false
python-versions = "*"

[package.dependencies]
arrow = ">=0.8.0"
click = ">=6.3"
humanfriendly = ">=1.44.3"
requests = ">=2.9.1"

[[package]]
name = "packaging"
version = "20.8"
description = "Core utilities for Python packages"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.dependencies]
pyparsing = ">=2.0.2"

[[package]]
name = "parso"
version = "0.8.1"
description = "A Python Parser"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.extras]
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest (<6.0.0)"]

[[package]]
name = "pathspec"
version = "0.8.1"
description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "pbr"
version = "5.5.1"
description = "Python Build Reasonableness"
category = "dev"
optional = false
python-versions = ">=2.6"

[[package]]
name = "pep8-naming"
version = "0.9.1"
description = "Check PEP-8 naming conventions, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
flake8-polyfill = ">=1.0.2,<2"

[[package]]
name = "pexpect"
version = "4.8.0"
description = "Pexpect allows easy control of interactive console applications."
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
ptyprocess = ">=0.5"

[[package]]
name = "pickleshare"
version = "0.7.5"
description = "Tiny 'shelve'-like database with concurrency support"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[package.extras]
dev = ["pre-commit", "tox"]

[[package]]
name = "ply"
version = "3.11"
description = "Python Lex & Yacc"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "polib"
version = "1.1.0"
description = "A library to manipulate gettext files (po and mo files)."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "polint"
version = "0.4"
description = "Linter for gettext PO files"
category = "dev"
optional = false
python-versions = ">2.6,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"

[package.dependencies]
docopt = "*"
polib = "*"

[package.extras]
quality = ["flake8", "isort", "pydocstyle"]
tests = ["mock"]

[[package]]
name = "prompt-toolkit"
version = "3.0.13"
description = "Library for building powerful interactive command lines in Python"
category = "dev"
optional = false
python-versions = ">=3.6.1"

[package.dependencies]
wcwidth = "*"

[[package]]
name = "psycopg2-binary"
version = "2.8.6"
description = "psycopg2 - Python-PostgreSQL Database Adapter"
category = "main"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"

[[package]]
name = "ptyprocess"
version = "0.7.0"
description = "Run a subprocess in a pseudo terminal"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "py"
version = "1.10.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "pycodestyle"
version = "2.6.0"
description = "Python style guide checker"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "pycparser"
version = "2.20"
description = "C parser in Python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "pydocstyle"
version = "5.1.1"
description = "Python docstring style checker"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
snowballstemmer = "*"

[[package]]
name = "pyflakes"
version = "2.2.0"
description = "passive checker of Python programs"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "pygments"
version = "2.7.4"
description = "Pygments is a syntax highlighting package written in Python."
category = "dev"
optional = false
python-versions = ">=3.5"

[[package]]
name = "pyparsing"
version = "2.4.7"
description = "Python parsing module"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"

[[package]]
name = "pyreadline"
version = "2.1"
description = "A python implmementation of GNU readline."
category = "main"
optional = false
python-versions = "*"

[[package]]
name = "pytest"
version = "6.2.1"
description = "pytest: simple powerful testing with Python"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=19.2.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<1.0.0a1"
py = ">=1.8.2"
toml = "*"

[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]

[[package]]
name = "pytest-cov"
version = "2.11.1"
description = "Pytest plugin for measuring coverage."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
coverage = ">=5.2.1"
pytest = ">=4.6"

[package.extras]
testing = ["fields", "hunter", "process-tests (==2.0.2)", "six", "pytest-xdist", "virtualenv"]

[[package]]
name = "pytest-deadfixtures"
version = "2.2.1"
description = "A simple plugin to list unused fixtures in pytest"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
pytest = ">=3.0.0"

[[package]]
name = "pytest-django"
version = "4.1.0"
description = "A Django plugin for pytest."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
pytest = ">=5.4.0"

[package.extras]
docs = ["sphinx", "sphinx-rtd-theme"]
testing = ["django", "django-configurations (>=2.0)"]

[[package]]
name = "pytest-randomly"
version = "3.5.0"
description = "Pytest plugin to randomly order tests and control random.seed."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
pytest = "*"

[[package]]
name = "pytest-testmon"
version = "1.0.3"
description = "selects tests affected by changed files and methods"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
coverage = ">=4,<6"
pytest = ">=5,<7"

[[package]]
name = "pytest-timeout"
version = "1.4.2"
description = "py.test plugin to abort hanging tests"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
pytest = ">=3.6.0"

[[package]]
name = "python-dateutil"
version = "2.8.1"
description = "Extensions to the standard Python datetime module"
category = "main"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"

[package.dependencies]
six = ">=1.5"

[[package]]
name = "python-decouple"
version = "3.4"
description = "Strict separation of settings from code."
category = "main"
optional = false
python-versions = "*"

[[package]]
name = "python-slugify"
version = "4.0.1"
description = "A Python Slugify application that handles Unicode"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
text-unidecode = ">=1.3"

[package.extras]
unidecode = ["Unidecode (>=1.1.1)"]

[[package]]
name = "pytz"
version = "2020.5"
description = "World timezone definitions, modern and historical"
category = "main"
optional = false
python-versions = "*"

[[package]]
name = "pyyaml"
version = "5.4.1"
description = "YAML parser and emitter for Python"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"

[[package]]
name = "requests"
version = "2.25.1"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[package.dependencies]
certifi = ">=2017.4.17"
chardet = ">=3.0.2,<5"
idna = ">=2.5,<3"
urllib3 = ">=1.21.1,<1.27"

[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]

[[package]]
name = "restructuredtext-lint"
version = "1.3.2"
description = "reStructuredText linter"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
docutils = ">=0.11,<1.0"

[[package]]
name = "ruamel.yaml"
version = "0.16.12"
description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order"
category = "dev"
optional = false
python-versions = "*"

[package.dependencies]
"ruamel.yaml.clib" = {version = ">=0.1.2", markers = "platform_python_implementation == \"CPython\" and python_version < \"3.9\""}

[package.extras]
docs = ["ryd"]
jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"]

[[package]]
name = "ruamel.yaml.clib"
version = "0.2.2"
description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "safety"
version = "1.10.3"
description = "Checks installed dependencies for known vulnerabilities."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
Click = ">=6.0"
dparse = ">=0.5.1"
packaging = "*"
requests = "*"

[[package]]
name = "six"
version = "1.15.0"
description = "Python 2 and 3 compatibility utilities"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"

[[package]]
name = "smmap"
version = "3.0.5"
description = "A pure Python implementation of a sliding window memory map manager"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"

[[package]]
name = "snowballstemmer"
version = "2.1.0"
description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms."
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "sortedcontainers"
version = "2.3.0"
description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "sphinx"
version = "3.4.3"
description = "Python documentation generator"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.dependencies]
alabaster = ">=0.7,<0.8"
babel = ">=1.3"
colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
docutils = ">=0.12"
imagesize = "*"
Jinja2 = ">=2.3"
packaging = "*"
Pygments = ">=2.0"
requests = ">=2.5.0"
snowballstemmer = ">=1.1"
sphinxcontrib-applehelp = "*"
sphinxcontrib-devhelp = "*"
sphinxcontrib-htmlhelp = "*"
sphinxcontrib-jsmath = "*"
sphinxcontrib-qthelp = "*"
sphinxcontrib-serializinghtml = "*"

[package.extras]
docs = ["sphinxcontrib-websupport"]
lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.790)", "docutils-stubs"]
test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]

[[package]]
name = "sphinx-autodoc-typehints"
version = "1.11.1"
description = "Type hints (PEP 484) support for the Sphinx autodoc extension"
category = "dev"
optional = false
python-versions = ">=3.5.2"

[package.dependencies]
Sphinx = ">=3.0"

[package.extras]
test = ["pytest (>=3.1.0)", "typing-extensions (>=3.5)", "sphobjinv (>=2.0)", "Sphinx (>=3.2.0)", "dataclasses"]
type_comments = ["typed-ast (>=1.4.0)"]

[[package]]
name = "sphinxcontrib-applehelp"
version = "1.0.2"
description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]

[[package]]
name = "sphinxcontrib-devhelp"
version = "1.0.2"
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]

[[package]]
name = "sphinxcontrib-htmlhelp"
version = "1.0.3"
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest", "html5lib"]

[[package]]
name = "sphinxcontrib-jsmath"
version = "1.0.1"
description = "A sphinx extension which renders display math in HTML via JavaScript"
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
test = ["pytest", "flake8", "mypy"]

[[package]]
name = "sphinxcontrib-qthelp"
version = "1.0.3"
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]

[[package]]
name = "sphinxcontrib-serializinghtml"
version = "1.1.4"
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
category = "dev"
optional = false
python-versions = ">=3.5"

[package.extras]
lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]

[[package]]
name = "sqlparse"
version = "0.4.1"
description = "A non-validating SQL parser."
category = "main"
optional = false
python-versions = ">=3.5"

[[package]]
name = "stevedore"
version = "3.3.0"
description = "Manage dynamic plugins for Python applications"
category = "dev"
optional = false
python-versions = ">=3.6"

[package.dependencies]
pbr = ">=2.0.0,<2.1.0 || >2.1.0"

[[package]]
name = "structlog"
version = "20.2.0"
description = "Structured Logging for Python"
category = "main"
optional = false
python-versions = ">=3.6"

[package.extras]
dev = ["coverage", "freezegun (>=0.2.8)", "pretend", "pytest-asyncio", "pytest-randomly", "pytest (>=6.0)", "simplejson", "furo", "sphinx", "sphinx-toolbox", "twisted", "pre-commit"]
docs = ["furo", "sphinx", "sphinx-toolbox", "twisted"]
tests = ["coverage", "freezegun (>=0.2.8)", "pretend", "pytest-asyncio", "pytest-randomly", "pytest (>=6.0)", "simplejson"]

[[package]]
name = "testfixtures"
version = "6.17.1"
description = "A collection of helpers and mock objects for unit tests and doc tests."
category = "dev"
optional = false
python-versions = "*"

[package.extras]
build = ["setuptools-git", "wheel", "twine"]
docs = ["sphinx", "zope.component", "sybil", "twisted", "mock", "django (<2)", "django"]
test = ["pytest (>=3.6)", "pytest-cov", "pytest-django", "zope.component", "sybil", "twisted", "mock", "django (<2)", "django"]

[[package]]
name = "text-unidecode"
version = "1.3"
description = "The most basic Text::Unidecode port"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"

[[package]]
name = "tomlkit"
version = "0.7.0"
description = "Style preserving TOML library"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"

[[package]]
name = "traitlets"
version = "5.0.5"
description = "Traitlets Python configuration system"
category = "dev"
optional = false
python-versions = ">=3.7"

[package.dependencies]
ipython-genutils = "*"

[package.extras]
test = ["pytest"]

[[package]]
name = "typed-ast"
version = "1.4.2"
description = "a fork of Python 2 and 3 ast modules with type comment support"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "typing-extensions"
version = "3.7.4.3"
description = "Backported and Experimental Type Hints for Python 3.5+"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "urllib3"
version = "1.26.2"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"

[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]

[[package]]
name = "wcwidth"
version = "0.2.5"
description = "Measures the displayed width of unicode strings in a terminal"
category = "dev"
optional = false
python-versions = "*"

[[package]]
name = "wemake-python-styleguide"
version = "0.14.1"
description = "The strictest and most opinionated python linter ever"
category = "dev"
optional = false
python-versions = ">=3.6,<4.0"

[package.dependencies]
astor = ">=0.8,<0.9"
attrs = "*"
darglint = ">=1.2,<2.0"
flake8 = ">=3.7,<4.0"
flake8-bandit = ">=2.1,<3.0"
flake8-broken-line = ">=0.2,<0.3"
flake8-bugbear = ">=19.3,<20.0"
flake8-commas = ">=2.0,<3.0"
flake8-comprehensions = ">=3.1.0,<4.0.0"
flake8-debugger = ">=3.1,<4.0"
flake8-docstrings = ">=1.3.1,<2.0.0"
flake8-eradicate = ">=0.3,<0.4"
flake8-isort = ">=3.0.1,<4"
flake8-quotes = ">=2.0.1,<3.0.0"
flake8-rst-docstrings = ">=0.0.12,<0.0.13"
flake8-string-format = ">=0.2,<0.3"
pep8-naming = ">=0.9.1,<0.10.0"
pygments = ">=2.4,<3.0"
typing_extensions = ">=3.6,<4.0"

[[package]]
name = "yamllint"
version = "1.25.0"
description = "A linter for YAML files."
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"

[package.dependencies]
pathspec = ">=0.5.3"
pyyaml = "*"

[metadata]
lock-version = "1.1"
python-versions = "3.8.6"
content-hash = "0bdcb6a2d73f36ec7befe730e85f7cd6f8b672ad1c4321bb70e5f5b38986fef9"

[metadata.files]
alabaster = [
    {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"},
    {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
]
appdirs = [
    {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
    {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
]
appnope = [
    {file = "appnope-0.1.2-py2.py3-none-any.whl", hash = "sha256:93aa393e9d6c54c5cd570ccadd8edad61ea0c4b9ea7a01409020c9aa019eb442"},
    {file = "appnope-0.1.2.tar.gz", hash = "sha256:dd83cd4b5b460958838f6eb3000c660b1f9caf2a5b1de4264e941512f603258a"},
]
arrow = [
    {file = "arrow-0.17.0-py2.py3-none-any.whl", hash = "sha256:e098abbd9af3665aea81bdd6c869e93af4feb078e98468dd351c383af187aac5"},
    {file = "arrow-0.17.0.tar.gz", hash = "sha256:ff08d10cda1d36c68657d6ad20d74fbea493d980f8b2d45344e00d6ed2bf6ed4"},
]
astor = [
    {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"},
    {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"},
]
atomicwrites = [
    {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
    {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
]
attrs = [
    {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
    {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
]
babel = [
    {file = "Babel-2.9.0-py2.py3-none-any.whl", hash = "sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5"},
    {file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"},
]
backcall = [
    {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
    {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
]
bandit = [
    {file = "bandit-1.7.0-py3-none-any.whl", hash = "sha256:216be4d044209fa06cf2a3e51b319769a51be8318140659719aa7a115c35ed07"},
    {file = "bandit-1.7.0.tar.gz", hash = "sha256:8a4c7415254d75df8ff3c3b15cfe9042ecee628a1e40b44c15a98890fbfc2608"},
]
bcrypt = [
    {file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"},
    {file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"},
    {file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"},
    {file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"},
    {file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"},
    {file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"},
    {file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"},
]
blinker = [
    {file = "blinker-1.4.tar.gz", hash = "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6"},
]
certifi = [
    {file = "certifi-2020.12.5-py2.py3-none-any.whl", hash = "sha256:719a74fb9e33b9bd44cc7f3a8d94bc35e4049deebe19ba7d8e108280cfd59830"},
    {file = "certifi-2020.12.5.tar.gz", hash = "sha256:1a4995114262bffbc2413b159f2a1a480c969de6e6eb13ee966d470af86af59c"},
]
cffi = [
    {file = "cffi-1.14.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ebb253464a5d0482b191274f1c8bf00e33f7e0b9c66405fbffc61ed2c839c775"},
    {file = "cffi-1.14.4-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2c24d61263f511551f740d1a065eb0212db1dbbbbd241db758f5244281590c06"},
    {file = "cffi-1.14.4-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9f7a31251289b2ab6d4012f6e83e58bc3b96bd151f5b5262467f4bb6b34a7c26"},
    {file = "cffi-1.14.4-cp27-cp27m-win32.whl", hash = "sha256:5cf4be6c304ad0b6602f5c4e90e2f59b47653ac1ed9c662ed379fe48a8f26b0c"},
    {file = "cffi-1.14.4-cp27-cp27m-win_amd64.whl", hash = "sha256:f60567825f791c6f8a592f3c6e3bd93dd2934e3f9dac189308426bd76b00ef3b"},
    {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:c6332685306b6417a91b1ff9fae889b3ba65c2292d64bd9245c093b1b284809d"},
    {file = "cffi-1.14.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:d9efd8b7a3ef378dd61a1e77367f1924375befc2eba06168b6ebfa903a5e59ca"},
    {file = "cffi-1.14.4-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:51a8b381b16ddd370178a65360ebe15fbc1c71cf6f584613a7ea08bfad946698"},
    {file = "cffi-1.14.4-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:1d2c4994f515e5b485fd6d3a73d05526aa0fcf248eb135996b088d25dfa1865b"},
    {file = "cffi-1.14.4-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:af5c59122a011049aad5dd87424b8e65a80e4a6477419c0c1015f73fb5ea0293"},
    {file = "cffi-1.14.4-cp35-cp35m-win32.whl", hash = "sha256:594234691ac0e9b770aee9fcdb8fa02c22e43e5c619456efd0d6c2bf276f3eb2"},
    {file = "cffi-1.14.4-cp35-cp35m-win_amd64.whl", hash = "sha256:64081b3f8f6f3c3de6191ec89d7dc6c86a8a43911f7ecb422c60e90c70be41c7"},
    {file = "cffi-1.14.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f803eaa94c2fcda012c047e62bc7a51b0bdabda1cad7a92a522694ea2d76e49f"},
    {file = "cffi-1.14.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:105abaf8a6075dc96c1fe5ae7aae073f4696f2905fde6aeada4c9d2926752362"},
    {file = "cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0638c3ae1a0edfb77c6765d487fee624d2b1ee1bdfeffc1f0b58c64d149e7eec"},
    {file = "cffi-1.14.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:7c6b1dece89874d9541fc974917b631406233ea0440d0bdfbb8e03bf39a49b3b"},
    {file = "cffi-1.14.4-cp36-cp36m-win32.whl", hash = "sha256:155136b51fd733fa94e1c2ea5211dcd4c8879869008fc811648f16541bf99668"},
    {file = "cffi-1.14.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6bc25fc545a6b3d57b5f8618e59fc13d3a3a68431e8ca5fd4c13241cd70d0009"},
    {file = "cffi-1.14.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a7711edca4dcef1a75257b50a2fbfe92a65187c47dab5a0f1b9b332c5919a3fb"},
    {file = "cffi-1.14.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:00e28066507bfc3fe865a31f325c8391a1ac2916219340f87dfad602c3e48e5d"},
    {file = "cffi-1.14.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:798caa2a2384b1cbe8a2a139d80734c9db54f9cc155c99d7cc92441a23871c03"},
    {file = "cffi-1.14.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a5ed8c05548b54b998b9498753fb9cadbfd92ee88e884641377d8a8b291bcc01"},
    {file = "cffi-1.14.4-cp37-cp37m-win32.whl", hash = "sha256:00a1ba5e2e95684448de9b89888ccd02c98d512064b4cb987d48f4b40aa0421e"},
    {file = "cffi-1.14.4-cp37-cp37m-win_amd64.whl", hash = "sha256:9cc46bc107224ff5b6d04369e7c595acb700c3613ad7bcf2e2012f62ece80c35"},
    {file = "cffi-1.14.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:df5169c4396adc04f9b0a05f13c074df878b6052430e03f50e68adf3a57aa28d"},
    {file = "cffi-1.14.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:9ffb888f19d54a4d4dfd4b3f29bc2c16aa4972f1c2ab9c4ab09b8ab8685b9c2b"},
    {file = "cffi-1.14.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8d6603078baf4e11edc4168a514c5ce5b3ba6e3e9c374298cb88437957960a53"},
    {file = "cffi-1.14.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:d5ff0621c88ce83a28a10d2ce719b2ee85635e85c515f12bac99a95306da4b2e"},
    {file = "cffi-1.14.4-cp38-cp38-win32.whl", hash = "sha256:b4e248d1087abf9f4c10f3c398896c87ce82a9856494a7155823eb45a892395d"},
    {file = "cffi-1.14.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec80dc47f54e6e9a78181ce05feb71a0353854cc26999db963695f950b5fb375"},
    {file = "cffi-1.14.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:840793c68105fe031f34d6a086eaea153a0cd5c491cde82a74b420edd0a2b909"},
    {file = "cffi-1.14.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:b18e0a9ef57d2b41f5c68beefa32317d286c3d6ac0484efd10d6e07491bb95dd"},
    {file = "cffi-1.14.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:045d792900a75e8b1e1b0ab6787dd733a8190ffcf80e8c8ceb2fb10a29ff238a"},
    {file = "cffi-1.14.4-cp39-cp39-win32.whl", hash = "sha256:ba4e9e0ae13fc41c6b23299545e5ef73055213e466bd107953e4a013a5ddd7e3"},
    {file = "cffi-1.14.4-cp39-cp39-win_amd64.whl", hash = "sha256:f032b34669220030f905152045dfa27741ce1a6db3324a5bc0b96b6c7420c87b"},
    {file = "cffi-1.14.4.tar.gz", hash = "sha256:1a465cbe98a7fd391d47dce4b8f7e5b921e6cd805ef421d04f5f66ba8f06086c"},
]
chardet = [
    {file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
    {file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
]
click = [
    {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"},
    {file = "click-7.1.2.tar.gz", hash = "sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"},
]
click-default-group = [
    {file = "click-default-group-1.2.2.tar.gz", hash = "sha256:d9560e8e8dfa44b3562fbc9425042a0fd6d21956fcc2db0077f63f34253ab904"},
]
colorama = [
    {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
    {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
coverage = [
    {file = "coverage-5.3.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:fabeeb121735d47d8eab8671b6b031ce08514c86b7ad8f7d5490a7b6dcd6267d"},
    {file = "coverage-5.3.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:7e4d159021c2029b958b2363abec4a11db0ce8cd43abb0d9ce44284cb97217e7"},
    {file = "coverage-5.3.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:378ac77af41350a8c6b8801a66021b52da8a05fd77e578b7380e876c0ce4f528"},
    {file = "coverage-5.3.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e448f56cfeae7b1b3b5bcd99bb377cde7c4eb1970a525c770720a352bc4c8044"},
    {file = "coverage-5.3.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:cc44e3545d908ecf3e5773266c487ad1877be718d9dc65fc7eb6e7d14960985b"},
    {file = "coverage-5.3.1-cp27-cp27m-win32.whl", hash = "sha256:08b3ba72bd981531fd557f67beee376d6700fba183b167857038997ba30dd297"},
    {file = "coverage-5.3.1-cp27-cp27m-win_amd64.whl", hash = "sha256:8dacc4073c359f40fcf73aede8428c35f84639baad7e1b46fce5ab7a8a7be4bb"},
    {file = "coverage-5.3.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ee2f1d1c223c3d2c24e3afbb2dd38be3f03b1a8d6a83ee3d9eb8c36a52bee899"},
    {file = "coverage-5.3.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:9a9d4ff06804920388aab69c5ea8a77525cf165356db70131616acd269e19b36"},
    {file = "coverage-5.3.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:782a5c7df9f91979a7a21792e09b34a658058896628217ae6362088b123c8500"},
    {file = "coverage-5.3.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:fda29412a66099af6d6de0baa6bd7c52674de177ec2ad2630ca264142d69c6c7"},
    {file = "coverage-5.3.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:f2c6888eada180814b8583c3e793f3f343a692fc802546eed45f40a001b1169f"},
    {file = "coverage-5.3.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:8f33d1156241c43755137288dea619105477961cfa7e47f48dbf96bc2c30720b"},
    {file = "coverage-5.3.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:b239711e774c8eb910e9b1ac719f02f5ae4bf35fa0420f438cdc3a7e4e7dd6ec"},
    {file = "coverage-5.3.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:f54de00baf200b4539a5a092a759f000b5f45fd226d6d25a76b0dff71177a714"},
    {file = "coverage-5.3.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:be0416074d7f253865bb67630cf7210cbc14eb05f4099cc0f82430135aaa7a3b"},
    {file = "coverage-5.3.1-cp35-cp35m-win32.whl", hash = "sha256:c46643970dff9f5c976c6512fd35768c4a3819f01f61169d8cdac3f9290903b7"},
    {file = "coverage-5.3.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9a4f66259bdd6964d8cf26142733c81fb562252db74ea367d9beb4f815478e72"},
    {file = "coverage-5.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c6e5174f8ca585755988bc278c8bb5d02d9dc2e971591ef4a1baabdf2d99589b"},
    {file = "coverage-5.3.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:3911c2ef96e5ddc748a3c8b4702c61986628bb719b8378bf1e4a6184bbd48fe4"},
    {file = "coverage-5.3.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c5ec71fd4a43b6d84ddb88c1df94572479d9a26ef3f150cef3dacefecf888105"},
    {file = "coverage-5.3.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f51dbba78d68a44e99d484ca8c8f604f17e957c1ca09c3ebc2c7e3bbd9ba0448"},
    {file = "coverage-5.3.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:a2070c5affdb3a5e751f24208c5c4f3d5f008fa04d28731416e023c93b275277"},
    {file = "coverage-5.3.1-cp36-cp36m-win32.whl", hash = "sha256:535dc1e6e68fad5355f9984d5637c33badbdc987b0c0d303ee95a6c979c9516f"},
    {file = "coverage-5.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:a4857f7e2bc6921dbd487c5c88b84f5633de3e7d416c4dc0bb70256775551a6c"},
    {file = "coverage-5.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fac3c432851038b3e6afe086f777732bcf7f6ebbfd90951fa04ee53db6d0bcdd"},
    {file = "coverage-5.3.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:cd556c79ad665faeae28020a0ab3bda6cd47d94bec48e36970719b0b86e4dcf4"},
    {file = "coverage-5.3.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:a66ca3bdf21c653e47f726ca57f46ba7fc1f260ad99ba783acc3e58e3ebdb9ff"},
    {file = "coverage-5.3.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:ab110c48bc3d97b4d19af41865e14531f300b482da21783fdaacd159251890e8"},
    {file = "coverage-5.3.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:e52d3d95df81c8f6b2a1685aabffadf2d2d9ad97203a40f8d61e51b70f191e4e"},
    {file = "coverage-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:fa10fee7e32213f5c7b0d6428ea92e3a3fdd6d725590238a3f92c0de1c78b9d2"},
    {file = "coverage-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:ce6f3a147b4b1a8b09aae48517ae91139b1b010c5f36423fa2b866a8b23df879"},
    {file = "coverage-5.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93a280c9eb736a0dcca19296f3c30c720cb41a71b1f9e617f341f0a8e791a69b"},
    {file = "coverage-5.3.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:3102bb2c206700a7d28181dbe04d66b30780cde1d1c02c5f3c165cf3d2489497"},
    {file = "coverage-5.3.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8ffd4b204d7de77b5dd558cdff986a8274796a1e57813ed005b33fd97e29f059"},
    {file = "coverage-5.3.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:a607ae05b6c96057ba86c811d9c43423f35e03874ffb03fbdcd45e0637e8b631"},
    {file = "coverage-5.3.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:3a3c3f8863255f3c31db3889f8055989527173ef6192a283eb6f4db3c579d830"},
    {file = "coverage-5.3.1-cp38-cp38-win32.whl", hash = "sha256:ff1330e8bc996570221b450e2d539134baa9465f5cb98aff0e0f73f34172e0ae"},
    {file = "coverage-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:3498b27d8236057def41de3585f317abae235dd3a11d33e01736ffedb2ef8606"},
    {file = "coverage-5.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ceb499d2b3d1d7b7ba23abe8bf26df5f06ba8c71127f188333dddcf356b4b63f"},
    {file = "coverage-5.3.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:3b14b1da110ea50c8bcbadc3b82c3933974dbeea1832e814aab93ca1163cd4c1"},
    {file = "coverage-5.3.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:76b2775dda7e78680d688daabcb485dc87cf5e3184a0b3e012e1d40e38527cc8"},
    {file = "coverage-5.3.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:cef06fb382557f66d81d804230c11ab292d94b840b3cb7bf4450778377b592f4"},
    {file = "coverage-5.3.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f61319e33222591f885c598e3e24f6a4be3533c1d70c19e0dc59e83a71ce27d"},
    {file = "coverage-5.3.1-cp39-cp39-win32.whl", hash = "sha256:cc6f8246e74dd210d7e2b56c76ceaba1cc52b025cd75dbe96eb48791e0250e98"},
    {file = "coverage-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:2757fa64e11ec12220968f65d086b7a29b6583d16e9a544c889b22ba98555ef1"},
    {file = "coverage-5.3.1-pp36-none-any.whl", hash = "sha256:723d22d324e7997a651478e9c5a3120a0ecbc9a7e94071f7e1954562a8806cf3"},
    {file = "coverage-5.3.1-pp37-none-any.whl", hash = "sha256:c89b558f8a9a5a6f2cfc923c304d49f0ce629c3bd85cb442ca258ec20366394c"},
    {file = "coverage-5.3.1.tar.gz", hash = "sha256:38f16b1317b8dd82df67ed5daa5f5e7c959e46579840d77a67a4ceb9cef0a50b"},
]
darglint = [
    {file = "darglint-1.5.8-py3-none-any.whl", hash = "sha256:2e1012945a09d19a15cc87f9d15e7b14c18473ec9cf7769c641951b348de1353"},
    {file = "darglint-1.5.8.tar.gz", hash = "sha256:529f4969029d5ff5f74bfec48adc14b6f003409141f722b6cc4b787dddc8a4dd"},
]
decorator = [
    {file = "decorator-4.4.2-py2.py3-none-any.whl", hash = "sha256:41fa54c2a0cc4ba648be4fd43cff00aedf5b9465c9bf18d64325bc225f08f760"},
    {file = "decorator-4.4.2.tar.gz", hash = "sha256:e3a62f0520172440ca0dcc823749319382e377f37f140a0b99ef45fecb84bfe7"},
]
dennis = [
    {file = "dennis-0.9-py2.py3-none-any.whl", hash = "sha256:f6487392ac91800c5f0684a99b404b7fd0f72ceb48faeb5a0ce4e2c24fb62d3f"},
    {file = "dennis-0.9.tar.gz", hash = "sha256:8c942dd5da7d03c65daebc069c5ee5c7f1374ac9b0c8c89c627caa66fe822604"},
]
dictdiffer = [
    {file = "dictdiffer-0.8.1-py2.py3-none-any.whl", hash = "sha256:d79d9a39e459fe33497c858470ca0d2e93cb96621751de06d631856adfd9c390"},
    {file = "dictdiffer-0.8.1.tar.gz", hash = "sha256:1adec0d67cdf6166bda96ae2934ddb5e54433998ceab63c984574d187cc563d2"},
]
django = [
    {file = "Django-2.2.17-py3-none-any.whl", hash = "sha256:558cb27930defd9a6042133258caf797b2d1dee233959f537e3dc475cb49bd7c"},
    {file = "Django-2.2.17.tar.gz", hash = "sha256:cf5370a4d7765a9dd6d42a7b96b53c74f9446cd38209211304b210fe0404b861"},
]
django-axes = [
    {file = "django-axes-5.12.0.tar.gz", hash = "sha256:c26167f7ca2003df8358eb23537dffb1d97bd9f44ccef70d5c64a7aba2349456"},
    {file = "django_axes-5.12.0-py3-none-any.whl", hash = "sha256:db4e17fad2e07baa02bb210c5f819fb5137c548e3a5a4330ccc8662bb88d42c7"},
]
django-coverage-plugin = [
    {file = "django_coverage_plugin-1.8.0.tar.gz", hash = "sha256:d53cbf3828fd83d6b89ff7292c6805de5274e36411711692043e67bcde25ae0c"},
]
django-csp = [
    {file = "django_csp-3.7-py2.py3-none-any.whl", hash = "sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a"},
    {file = "django_csp-3.7.tar.gz", hash = "sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727"},
]
django-debug-toolbar = [
    {file = "django-debug-toolbar-3.2.tar.gz", hash = "sha256:84e2607d900dbd571df0a2acf380b47c088efb787dce9805aefeb407341961d2"},
    {file = "django_debug_toolbar-3.2-py3-none-any.whl", hash = "sha256:9e5a25d0c965f7e686f6a8ba23613ca9ca30184daa26487706d4829f5cfb697a"},
]
django-extra-checks = [
    {file = "django-extra-checks-0.8.0.tar.gz", hash = "sha256:25caa58baa557b4615af0363c14c340376a7cc08c41fbc2dbd35ff487e3282fe"},
    {file = "django_extra_checks-0.8.0-py3-none-any.whl", hash = "sha256:a37a4a9a22f2efa0e04a277b8d36e52f037a9e7edbcfcc2bb0860d608908d4c5"},
]
django-feature-policy = [
    {file = "django-feature-policy-3.6.0.tar.gz", hash = "sha256:dd6212e565b66c233945f8a080d7e06bf4968c8d2827a7dbc6e448c9a38d1b2a"},
    {file = "django_feature_policy-3.6.0-py3-none-any.whl", hash = "sha256:7c8fee6138c3c393292b9bd75661bd0e7bf008f4f35a30715f49c8f4b210f764"},
]
django-health-check = [
    {file = "django-health-check-3.16.2.tar.gz", hash = "sha256:d5edf773b59e4091ac6bd65280091dbb13d92e70eba5cf8573faa738a9cb481c"},
    {file = "django_health_check-3.16.2-py2.py3-none-any.whl", hash = "sha256:aec4dd5cfb8333071f535c3611ef805ec2012af9568cf984be351ff1bd4020be"},
]
django-http-referrer-policy = [
    {file = "django-http-referrer-policy-1.1.1.tar.gz", hash = "sha256:917f5ed62054b27eff3172b7eccfb018469e85ddd538767328553282a70493c3"},
    {file = "django_http_referrer_policy-1.1.1-py2.py3-none-any.whl", hash = "sha256:7617d1256f1ab80c1a12bffdd8c8d24b94093eb1e21d035e2aa6d7d3c5ac999e"},
]
django-ipware = [
    {file = "django-ipware-3.0.2.tar.gz", hash = "sha256:c7df8e1410a8e5d6b1fbae58728402ea59950f043c3582e033e866f0f0cf5e94"},
]
django-migration-linter = [
    {file = "django-migration-linter-2.4.0.tar.gz", hash = "sha256:445c17d87c1245f018b4855bef31232f3a4e0e707e473cc1c1947402c3ea2b6e"},
    {file = "django_migration_linter-2.4.0-py2.py3-none-any.whl", hash = "sha256:40f3db9e6f1e88047f6baaa801dc4daccccb370bab1102e51a82b41b2e349956"},
]
django-open-humans = [
    {file = "django-open-humans-0.1.6.tar.gz", hash = "sha256:6552bcccf5ac45e04763b8e599216d6ab97e22a37670827c43196e45ba87294c"},
]
django-querycount = [
    {file = "django-querycount-0.7.0.tar.gz", hash = "sha256:8f5123d78716ff0704f2373e746a7200b8d8417798ce4a99bf2de87e3768f9ce"},
]
django-split-settings = [
    {file = "django-split-settings-1.0.1.tar.gz", hash = "sha256:2da16cd967cd38315ec7ff0ae0c9db8488f8528bb2e5de26cd898328dc4bbeac"},
    {file = "django_split_settings-1.0.1-py3-none-any.whl", hash = "sha256:8d636649023289d0ef0ba08b0a4f37761adc94a29ee0ebfe65922c3cb0594ede"},
]
django-stubs = [
    {file = "django-stubs-1.7.0.tar.gz", hash = "sha256:ddd190aca5b9adb4d30760d5c64f67cb3658703f5f42c3bb0c2c71ff4d752c39"},
    {file = "django_stubs-1.7.0-py3-none-any.whl", hash = "sha256:30a7d99c694acf79c5d93d69a5a8e4b54d2a8c11dd672aa869006789e2189fa6"},
]
django-stubs-ext = [
    {file = "django-stubs-ext-0.1.0.tar.gz", hash = "sha256:2cf0f9615c0f7c399d23e4be4d9ab4b354e550480a950f659cdf1aa3ba19bd38"},
    {file = "django_stubs_ext-0.1.0-py3-none-any.whl", hash = "sha256:663469e7452ead59ae9235eb62b35ef09a15ae94f2193fedf1b84aea471fc011"},
]
django-test-migrations = [
    {file = "django-test-migrations-1.1.0.tar.gz", hash = "sha256:27c0127552920bbdc339a84de360f1792abc8c353e2c8d2b86af92dc1ade6703"},
    {file = "django_test_migrations-1.1.0-py3-none-any.whl", hash = "sha256:7ea17dac1a0b0c8084681899c6563d85f4262832f2fbb0c6240b12e554333934"},
]
doc8 = [
    {file = "doc8-0.8.1-py2.py3-none-any.whl", hash = "sha256:4d58a5c8c56cedd2b2c9d6e3153be5d956cf72f6051128f0f2255c66227df721"},
    {file = "doc8-0.8.1.tar.gz", hash = "sha256:4d1df12598807cf08ffa9a1d5ef42d229ee0de42519da01b768ff27211082c12"},
]
docopt = [
    {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"},
]
docutils = [
    {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
    {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
]
dotenv-linter = [
    {file = "dotenv-linter-0.2.0.tar.gz", hash = "sha256:c99b981966450e48007b92547ed8e16355ec88f1dac5494a4576440546467cf7"},
    {file = "dotenv_linter-0.2.0-py3-none-any.whl", hash = "sha256:536992ef6f6bf803e58e2984cf428486491059ca750b13bd9eb6b5186110709a"},
]
dparse = [
    {file = "dparse-0.5.1-py3-none-any.whl", hash = "sha256:e953a25e44ebb60a5c6efc2add4420c177f1d8404509da88da9729202f306994"},
    {file = "dparse-0.5.1.tar.gz", hash = "sha256:a1b5f169102e1c894f9a7d5ccf6f9402a836a5d24be80a986c7ce9eaed78f367"},
]
dump-env = [
    {file = "dump-env-1.2.0.tar.gz", hash = "sha256:9b9ee7a8afe2a8194a712d12a925cc54f0b3178833491fdced5dcb6f68b56c60"},
    {file = "dump_env-1.2.0-py3-none-any.whl", hash = "sha256:ca26f6d87a33418adb794338e748a0d3507014e3388250077c696e8c96634562"},
]
eradicate = [
    {file = "eradicate-1.0.tar.gz", hash = "sha256:4ffda82aae6fd49dfffa777a857cb758d77502a1f2e0f54c9ac5155a39d2d01a"},
]
flake8 = [
    {file = "flake8-3.8.4-py2.py3-none-any.whl", hash = "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839"},
    {file = "flake8-3.8.4.tar.gz", hash = "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b"},
]
flake8-bandit = [
    {file = "flake8_bandit-2.1.2.tar.gz", hash = "sha256:687fc8da2e4a239b206af2e54a90093572a60d0954f3054e23690739b0b0de3b"},
]
flake8-broken-line = [
    {file = "flake8-broken-line-0.2.1.tar.gz", hash = "sha256:414477070231a5aa05468d48db2742a594b53fbc1ecba28044646706a11fb861"},
    {file = "flake8_broken_line-0.2.1-py3-none-any.whl", hash = "sha256:75858359e3ccd4f1d92a9e7582aa5c9e4485cbc920dd05954703900cf907667e"},
]
flake8-bugbear = [
    {file = "flake8-bugbear-19.8.0.tar.gz", hash = "sha256:d8c466ea79d5020cb20bf9f11cf349026e09517a42264f313d3f6fddb83e0571"},
    {file = "flake8_bugbear-19.8.0-py35.py36.py37-none-any.whl", hash = "sha256:ded4d282778969b5ab5530ceba7aa1a9f1b86fa7618fc96a19a1d512331640f8"},
]
flake8-commas = [
    {file = "flake8-commas-2.0.0.tar.gz", hash = "sha256:d3005899466f51380387df7151fb59afec666a0f4f4a2c6a8995b975de0f44b7"},
    {file = "flake8_commas-2.0.0-py2.py3-none-any.whl", hash = "sha256:ee2141a3495ef9789a3894ed8802d03eff1eaaf98ce6d8653a7c573ef101935e"},
]
flake8-comprehensions = [
    {file = "flake8-comprehensions-3.3.1.tar.gz", hash = "sha256:e734bf03806bb562886d9bf635d23a65a1a995c251b67d7e007a7b608af9bd22"},
    {file = "flake8_comprehensions-3.3.1-py3-none-any.whl", hash = "sha256:6d80dfafda0d85633f88ea5bc7de949485f71f1e28db7af7719563fe5f62dcb1"},
]
flake8-debugger = [
    {file = "flake8-debugger-3.2.1.tar.gz", hash = "sha256:712d7c1ff69ddf3f0130e94cc88c2519e720760bce45e8c330bfdcb61ab4090d"},
]
flake8-django = [
    {file = "flake8-django-1.1.1.tar.gz", hash = "sha256:fb4e8f669d3cf44297bb6e1c5d0a358ab0aba373cd4c69268cf2798de6bcbd9b"},
    {file = "flake8_django-1.1.1-py3-none-any.whl", hash = "sha256:c71da0e61b6119dae91cbffdbdb00f1d6ebe3f5d0c43f5bf136929997ab0b72d"},
]
flake8-docstrings = [
    {file = "flake8-docstrings-1.5.0.tar.gz", hash = "sha256:3d5a31c7ec6b7367ea6506a87ec293b94a0a46c0bce2bb4975b7f1d09b6f3717"},
    {file = "flake8_docstrings-1.5.0-py2.py3-none-any.whl", hash = "sha256:a256ba91bc52307bef1de59e2a009c3cf61c3d0952dbe035d6ff7208940c2edc"},
]
flake8-eradicate = [
    {file = "flake8-eradicate-0.3.0.tar.gz", hash = "sha256:d0b3d283d85079917acbfe39b9d637385cd82cba3ae3d76c1278c07ddcf0d9b9"},
    {file = "flake8_eradicate-0.3.0-py3-none-any.whl", hash = "sha256:e8b32b32300bfb407fe7ef74667c8d2d3a6a81bdf6f09c14a7bcc82b7b870f8b"},
]
flake8-isort = [
    {file = "flake8-isort-3.0.1.tar.gz", hash = "sha256:5d976da513cc390232ad5a9bb54aee8a092466a15f442d91dfc525834bee727a"},
    {file = "flake8_isort-3.0.1-py2.py3-none-any.whl", hash = "sha256:df1dd6dd73f6a8b128c9c783356627231783cccc82c13c6dc343d1a5a491699b"},
]
flake8-logging-format = [
    {file = "flake8-logging-format-0.6.0.tar.gz", hash = "sha256:ca5f2b7fc31c3474a0aa77d227e022890f641a025f0ba664418797d979a779f8"},
]
flake8-plugin-utils = [
    {file = "flake8-plugin-utils-1.3.1.tar.gz", hash = "sha256:6e996bc24ebe327558f24efd106f1be5f0c033c8cbb6eed815631f73d487f1c9"},
    {file = "flake8_plugin_utils-1.3.1-py3-none-any.whl", hash = "sha256:efdbf9d15b18f72b7c348dd360f30e7cf3e73aa67ff832d5343eb5aa1115f250"},
]
flake8-polyfill = [
    {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"},
    {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
]
flake8-pytest-style = [
    {file = "flake8-pytest-style-1.3.0.tar.gz", hash = "sha256:d141476de2d1a31e491c2090ba7d1e32980b11a2c12e8aa3b3cc844571b19bfa"},
    {file = "flake8_pytest_style-1.3.0-py3-none-any.whl", hash = "sha256:5a0bfb30696eb97473bb2078834794e9491848f975f680bdcb0554e5b4efbbfc"},
]
flake8-quotes = [
    {file = "flake8-quotes-2.1.2.tar.gz", hash = "sha256:c844c9592940c8926c60f00bc620808912ff2acd34923ab5338f3a5ca618a331"},
]
flake8-rst-docstrings = [
    {file = "flake8-rst-docstrings-0.0.12.tar.gz", hash = "sha256:01d38327801781b26c3dfeb71ae37e5a02c5ca1b774a686f63feab8824ca6f9c"},
]
flake8-string-format = [
    {file = "flake8-string-format-0.2.3.tar.gz", hash = "sha256:774d56103d9242ed968897455ef49b7d6de272000cfa83de5814273a868832f1"},
    {file = "flake8_string_format-0.2.3-py2.py3-none-any.whl", hash = "sha256:68ea72a1a5b75e7018cae44d14f32473c798cf73d75cbaed86c6a9a907b770b2"},
]
gitdb = [
    {file = "gitdb-4.0.5-py3-none-any.whl", hash = "sha256:91f36bfb1ab7949b3b40e23736db18231bf7593edada2ba5c3a174a7b23657ac"},
    {file = "gitdb-4.0.5.tar.gz", hash = "sha256:c9e1f2d0db7ddb9a704c2a0217be31214e91a4fe1dea1efad19ae42ba0c285c9"},
]
gitpython = [
    {file = "GitPython-3.1.12-py3-none-any.whl", hash = "sha256:867ec3dfb126aac0f8296b19fb63b8c4a399f32b4b6fafe84c4b10af5fa9f7b5"},
    {file = "GitPython-3.1.12.tar.gz", hash = "sha256:42dbefd8d9e2576c496ed0059f3103dcef7125b9ce16f9d5f9c834aed44a1dac"},
]
gunicorn = [
    {file = "gunicorn-20.0.4-py2.py3-none-any.whl", hash = "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c"},
    {file = "gunicorn-20.0.4.tar.gz", hash = "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"},
]
humanfriendly = [
    {file = "humanfriendly-9.1-py2.py3-none-any.whl", hash = "sha256:d5c731705114b9ad673754f3317d9fa4c23212f36b29bdc4272a892eafc9bc72"},
    {file = "humanfriendly-9.1.tar.gz", hash = "sha256:066562956639ab21ff2676d1fda0b5987e985c534fc76700a19bd54bcb81121d"},
]
hypothesis = [
    {file = "hypothesis-5.49.0-py3-none-any.whl", hash = "sha256:e91111f2f01abf2566041c4c86366aa7f08bfd5b3d858cc77a545fcf67df335e"},
    {file = "hypothesis-5.49.0.tar.gz", hash = "sha256:36a4d5587c34193125d654b61bf9284e24a227d1edd339c49143378658a10c7d"},
]
identify = [
    {file = "identify-1.5.13-py2.py3-none-any.whl", hash = "sha256:9dfb63a2e871b807e3ba62f029813552a24b5289504f5b071dea9b041aee9fe4"},
    {file = "identify-1.5.13.tar.gz", hash = "sha256:70b638cf4743f33042bebb3b51e25261a0a10e80f978739f17e7fd4837664a66"},
]
idna = [
    {file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
    {file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
]
imagesize = [
    {file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"},
    {file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"},
]
iniconfig = [
    {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
    {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
]
ipython = [
    {file = "ipython-7.19.0-py3-none-any.whl", hash = "sha256:c987e8178ced651532b3b1ff9965925bfd445c279239697052561a9ab806d28f"},
    {file = "ipython-7.19.0.tar.gz", hash = "sha256:cbb2ef3d5961d44e6a963b9817d4ea4e1fa2eb589c371a470fed14d8d40cbd6a"},
]
ipython-genutils = [
    {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
    {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
]
isort = [
    {file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
    {file = "isort-4.3.21.tar.gz", hash = "sha256:54da7e92468955c4fceacd0c86bd0ec997b0e1ee80d97f67c35a78b719dccab1"},
]
jedi = [
    {file = "jedi-0.18.0-py2.py3-none-any.whl", hash = "sha256:18456d83f65f400ab0c2d3319e48520420ef43b23a086fdc05dff34132f0fb93"},
    {file = "jedi-0.18.0.tar.gz", hash = "sha256:92550a404bad8afed881a137ec9a461fed49eca661414be45059329614ed0707"},
]
jinja2 = [
    {file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
    {file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
]
jmespath = [
    {file = "jmespath-0.10.0-py2.py3-none-any.whl", hash = "sha256:cdf6525904cc597730141d61b36f2e4b8ecc257c420fa2f4549bac2c2d0cb72f"},
    {file = "jmespath-0.10.0.tar.gz", hash = "sha256:b85d0567b8666149a93172712e68920734333c0ce7e89b78b3e987f71e5ed4f9"},
]
markupsafe = [
    {file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
    {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"},
    {file = "MarkupSafe-1.1.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"},
    {file = "MarkupSafe-1.1.1-cp27-cp27m-win32.whl", hash = "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"},
    {file = "MarkupSafe-1.1.1-cp27-cp27m-win_amd64.whl", hash = "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"},
    {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"},
    {file = "MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"},
    {file = "MarkupSafe-1.1.1-cp34-cp34m-macosx_10_6_intel.whl", hash = "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"},
    {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_i686.whl", hash = "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"},
    {file = "MarkupSafe-1.1.1-cp34-cp34m-manylinux1_x86_64.whl", hash = "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"},
    {file = "MarkupSafe-1.1.1-cp34-cp34m-win32.whl", hash = "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"},
    {file = "MarkupSafe-1.1.1-cp34-cp34m-win_amd64.whl", hash = "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"},
    {file = "MarkupSafe-1.1.1-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"},
    {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"},
    {file = "MarkupSafe-1.1.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"},
    {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
    {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
    {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"},
    {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"},
    {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"},
    {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
    {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
    {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"},
    {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"},
    {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
    {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
    {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
    {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
    {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
    {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
    {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
    {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
    {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
]
marshmallow = [
    {file = "marshmallow-3.10.0-py2.py3-none-any.whl", hash = "sha256:eca81d53aa4aafbc0e20566973d0d2e50ce8bf0ee15165bb799bec0df1e50177"},
    {file = "marshmallow-3.10.0.tar.gz", hash = "sha256:4ab2fdb7f36eb61c3665da67a7ce281c8900db08d72ba6bf0e695828253581f7"},
]
marshmallow-polyfield = [
    {file = "marshmallow-polyfield-5.9.tar.gz", hash = "sha256:448f4b1ac5cbd671c0fb8a5452e99da7c0e8be924dd2cda2a21ee59457a4748f"},
]
mccabe = [
    {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
    {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
]
more-itertools = [
    {file = "more-itertools-8.6.0.tar.gz", hash = "sha256:b3a9005928e5bed54076e6e549c792b306fddfe72b2d1d22dd63d42d5d3899cf"},
    {file = "more_itertools-8.6.0-py3-none-any.whl", hash = "sha256:8e1a2a43b2f2727425f2b5839587ae37093f19153dc26c0927d1048ff6557330"},
]
mypy = [
    {file = "mypy-0.790-cp35-cp35m-macosx_10_6_x86_64.whl", hash = "sha256:bd03b3cf666bff8d710d633d1c56ab7facbdc204d567715cb3b9f85c6e94f669"},
    {file = "mypy-0.790-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:2170492030f6faa537647d29945786d297e4862765f0b4ac5930ff62e300d802"},
    {file = "mypy-0.790-cp35-cp35m-win_amd64.whl", hash = "sha256:e86bdace26c5fe9cf8cb735e7cedfe7850ad92b327ac5d797c656717d2ca66de"},
    {file = "mypy-0.790-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e97e9c13d67fbe524be17e4d8025d51a7dca38f90de2e462243ab8ed8a9178d1"},
    {file = "mypy-0.790-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0d34d6b122597d48a36d6c59e35341f410d4abfa771d96d04ae2c468dd201abc"},
    {file = "mypy-0.790-cp36-cp36m-win_amd64.whl", hash = "sha256:72060bf64f290fb629bd4a67c707a66fd88ca26e413a91384b18db3876e57ed7"},
    {file = "mypy-0.790-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:eea260feb1830a627fb526d22fbb426b750d9f5a47b624e8d5e7e004359b219c"},
    {file = "mypy-0.790-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:c614194e01c85bb2e551c421397e49afb2872c88b5830e3554f0519f9fb1c178"},
    {file = "mypy-0.790-cp37-cp37m-win_amd64.whl", hash = "sha256:0a0d102247c16ce93c97066443d11e2d36e6cc2a32d8ccc1f705268970479324"},
    {file = "mypy-0.790-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cf4e7bf7f1214826cf7333627cb2547c0db7e3078723227820d0a2490f117a01"},
    {file = "mypy-0.790-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:af4e9ff1834e565f1baa74ccf7ae2564ae38c8df2a85b057af1dbbc958eb6666"},
    {file = "mypy-0.790-cp38-cp38-win_amd64.whl", hash = "sha256:da56dedcd7cd502ccd3c5dddc656cb36113dd793ad466e894574125945653cea"},
    {file = "mypy-0.790-py3-none-any.whl", hash = "sha256:2842d4fbd1b12ab422346376aad03ff5d0805b706102e475e962370f874a5122"},
    {file = "mypy-0.790.tar.gz", hash = "sha256:2b21ba45ad9ef2e2eb88ce4aeadd0112d0f5026418324176fd494a6824b74975"},
]
mypy-extensions = [
    {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
    {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
nitpick = [
    {file = "nitpick-0.23.1-py3-none-any.whl", hash = "sha256:8102a6ae6ebd716cf796a614e37d9bb7f47851bb53f1c1edbf07675143ed55b9"},
    {file = "nitpick-0.23.1.tar.gz", hash = "sha256:f2293781c1357baa8969ada485e1c60503b1097375a73c1f2a3c988552071e6a"},
]
nplusone = [
    {file = "nplusone-1.0.0-py2.py3-none-any.whl", hash = "sha256:96b1e6e29e6af3e71b67d0cc012a5ec8c97c6a2f5399f4ba41a2bbe0e253a9ac"},
    {file = "nplusone-1.0.0.tar.gz", hash = "sha256:1726c0a10c0aa7eabb04e24db2882ff97b6b7ee29d729a8d97dcbd12ef5a5651"},
]
open-humans-api = [
    {file = "open-humans-api-0.2.9.tar.gz", hash = "sha256:c3328e5ee6a596b9ff653525e65252bb499ccfcb9ed330c0f86742d4d7dd228e"},
]
packaging = [
    {file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"},
    {file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
]
parso = [
    {file = "parso-0.8.1-py2.py3-none-any.whl", hash = "sha256:15b00182f472319383252c18d5913b69269590616c947747bc50bf4ac768f410"},
    {file = "parso-0.8.1.tar.gz", hash = "sha256:8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e"},
]
pathspec = [
    {file = "pathspec-0.8.1-py2.py3-none-any.whl", hash = "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d"},
    {file = "pathspec-0.8.1.tar.gz", hash = "sha256:86379d6b86d75816baba717e64b1a3a3469deb93bb76d613c9ce79edc5cb68fd"},
]
pbr = [
    {file = "pbr-5.5.1-py2.py3-none-any.whl", hash = "sha256:b236cde0ac9a6aedd5e3c34517b423cd4fd97ef723849da6b0d2231142d89c00"},
    {file = "pbr-5.5.1.tar.gz", hash = "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9"},
]
pep8-naming = [
    {file = "pep8-naming-0.9.1.tar.gz", hash = "sha256:a33d38177056321a167decd6ba70b890856ba5025f0a8eca6a3eda607da93caf"},
    {file = "pep8_naming-0.9.1-py2.py3-none-any.whl", hash = "sha256:45f330db8fcfb0fba57458c77385e288e7a3be1d01e8ea4268263ef677ceea5f"},
]
pexpect = [
    {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
    {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
]
pickleshare = [
    {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
    {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
]
pluggy = [
    {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
    {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
]
ply = [
    {file = "ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce"},
    {file = "ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3"},
]
polib = [
    {file = "polib-1.1.0-py2.py3-none-any.whl", hash = "sha256:93b730477c16380c9a96726c54016822ff81acfa553977fdd131f2b90ba858d7"},
    {file = "polib-1.1.0.tar.gz", hash = "sha256:fad87d13696127ffb27ea0882d6182f1a9cf8a5e2b37a587751166c51e5a332a"},
]
polint = [
    {file = "polint-0.4.tar.gz", hash = "sha256:51b68a8719aaa141a288718e950d5f5c529d6b8efbfd6e3e35ab951092a91edd"},
]
prompt-toolkit = [
    {file = "prompt_toolkit-3.0.13-py3-none-any.whl", hash = "sha256:d2b91517488f1478ee30f938303a3d60b04cc0b7c2253e7c83f1b9b7635274b4"},
    {file = "prompt_toolkit-3.0.13.tar.gz", hash = "sha256:e2d04e0e4de0c0a8b67db89a5be6dcf81fed6ca7e8c4affca8b7a5b8595c19dd"},
]
psycopg2-binary = [
    {file = "psycopg2-binary-2.8.6.tar.gz", hash = "sha256:11b9c0ebce097180129e422379b824ae21c8f2a6596b159c7659e2e5a00e1aa0"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d14b140a4439d816e3b1229a4a525df917d6ea22a0771a2a78332273fd9528a4"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1fabed9ea2acc4efe4671b92c669a213db744d2af8a9fc5d69a8e9bc14b7a9db"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f5ab93a2cb2d8338b1674be43b442a7f544a0971da062a5da774ed40587f18f5"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:b4afc542c0ac0db720cf516dd20c0846f71c248d2b3d21013aa0d4ef9c71ca25"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:e74a55f6bad0e7d3968399deb50f61f4db1926acf4a6d83beaaa7df986f48b1c"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:0deac2af1a587ae12836aa07970f5cb91964f05a7c6cdb69d8425ff4c15d4e2c"},
    {file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ad20d2eb875aaa1ea6d0f2916949f5c08a19c74d05b16ce6ebf6d24f2c9f75d1"},
    {file = "psycopg2_binary-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:950bc22bb56ee6ff142a2cb9ee980b571dd0912b0334aa3fe0fe3788d860bea2"},
    {file = "psycopg2_binary-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:b8a3715b3c4e604bcc94c90a825cd7f5635417453b253499664f784fc4da0152"},
    {file = "psycopg2_binary-2.8.6-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d1b4ab59e02d9008efe10ceabd0b31e79519da6fb67f7d8e8977118832d0f449"},
    {file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:ac0c682111fbf404525dfc0f18a8b5f11be52657d4f96e9fcb75daf4f3984859"},
    {file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7d92a09b788cbb1aec325af5fcba9fed7203897bbd9269d5691bb1e3bce29550"},
    {file = "psycopg2_binary-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:aaa4213c862f0ef00022751161df35804127b78adf4a2755b9f991a507e425fd"},
    {file = "psycopg2_binary-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:c2507d796fca339c8fb03216364cca68d87e037c1f774977c8fc377627d01c71"},
    {file = "psycopg2_binary-2.8.6-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ee69dad2c7155756ad114c02db06002f4cded41132cc51378e57aad79cc8e4f4"},
    {file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e82aba2188b9ba309fd8e271702bd0d0fc9148ae3150532bbb474f4590039ffb"},
    {file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d5227b229005a696cc67676e24c214740efd90b148de5733419ac9aaba3773da"},
    {file = "psycopg2_binary-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a0eb43a07386c3f1f1ebb4dc7aafb13f67188eab896e7397aa1ee95a9c884eb2"},
    {file = "psycopg2_binary-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:e1f57aa70d3f7cc6947fd88636a481638263ba04a742b4a37dd25c373e41491a"},
    {file = "psycopg2_binary-2.8.6-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:833709a5c66ca52f1d21d41865a637223b368c0ee76ea54ca5bad6f2526c7679"},
    {file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ba28584e6bca48c59eecbf7efb1576ca214b47f05194646b081717fa628dfddf"},
    {file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6a32f3a4cb2f6e1a0b15215f448e8ce2da192fd4ff35084d80d5e39da683e79b"},
    {file = "psycopg2_binary-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:0e4dc3d5996760104746e6cfcdb519d9d2cd27c738296525d5867ea695774e67"},
    {file = "psycopg2_binary-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:cec7e622ebc545dbb4564e483dd20e4e404da17ae07e06f3e780b2dacd5cee66"},
    {file = "psycopg2_binary-2.8.6-cp38-cp38-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ba381aec3a5dc29634f20692349d73f2d21f17653bda1decf0b52b11d694541f"},
    {file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a0c50db33c32594305b0ef9abc0cb7db13de7621d2cadf8392a1d9b3c437ef77"},
    {file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94"},
    {file = "psycopg2_binary-2.8.6-cp38-cp38-win32.whl", hash = "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729"},
    {file = "psycopg2_binary-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77"},
    {file = "psycopg2_binary-2.8.6-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83"},
    {file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52"},
    {file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd"},
    {file = "psycopg2_binary-2.8.6-cp39-cp39-win32.whl", hash = "sha256:6422f2ff0919fd720195f64ffd8f924c1395d30f9a495f31e2392c2efafb5056"},
    {file = "psycopg2_binary-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:15978a1fbd225583dd8cdaf37e67ccc278b5abecb4caf6b2d6b8e2b948e953f6"},
]
ptyprocess = [
    {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
    {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
]
py = [
    {file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
    {file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
]
pycodestyle = [
    {file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
    {file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
]
pycparser = [
    {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
    {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
]
pydocstyle = [
    {file = "pydocstyle-5.1.1-py3-none-any.whl", hash = "sha256:aca749e190a01726a4fb472dd4ef23b5c9da7b9205c0a7857c06533de13fd678"},
    {file = "pydocstyle-5.1.1.tar.gz", hash = "sha256:19b86fa8617ed916776a11cd8bc0197e5b9856d5433b777f51a3defe13075325"},
]
pyflakes = [
    {file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"},
    {file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"},
]
pygments = [
    {file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"},
    {file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"},
]
pyparsing = [
    {file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
    {file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
]
pyreadline = [
    {file = "pyreadline-2.1.win-amd64.exe", hash = "sha256:9ce5fa65b8992dfa373bddc5b6e0864ead8f291c94fbfec05fbd5c836162e67b"},
    {file = "pyreadline-2.1.win32.exe", hash = "sha256:65540c21bfe14405a3a77e4c085ecfce88724743a4ead47c66b84defcf82c32e"},
    {file = "pyreadline-2.1.zip", hash = "sha256:4530592fc2e85b25b1a9f79664433da09237c1a270e4d78ea5aa3a2c7229e2d1"},
]
pytest = [
    {file = "pytest-6.2.1-py3-none-any.whl", hash = "sha256:1969f797a1a0dbd8ccf0fecc80262312729afea9c17f1d70ebf85c5e76c6f7c8"},
    {file = "pytest-6.2.1.tar.gz", hash = "sha256:66e419b1899bc27346cb2c993e12c5e5e8daba9073c1fbce33b9807abc95c306"},
]
pytest-cov = [
    {file = "pytest-cov-2.11.1.tar.gz", hash = "sha256:359952d9d39b9f822d9d29324483e7ba04a3a17dd7d05aa6beb7ea01e359e5f7"},
    {file = "pytest_cov-2.11.1-py2.py3-none-any.whl", hash = "sha256:bdb9fdb0b85a7cc825269a4c56b48ccaa5c7e365054b6038772c32ddcdc969da"},
]
pytest-deadfixtures = [
    {file = "pytest-deadfixtures-2.2.1.tar.gz", hash = "sha256:ca15938a4e8330993ccec9c6c847383d88b3cd574729530647dc6b492daa9c1e"},
    {file = "pytest_deadfixtures-2.2.1-py2.py3-none-any.whl", hash = "sha256:db71533f2d9456227084e00a1231e732973e299ccb7c37ab92e95032ab6c083e"},
]
pytest-django = [
    {file = "pytest-django-4.1.0.tar.gz", hash = "sha256:26f02c16d36fd4c8672390deebe3413678d89f30720c16efb8b2a6bf63b9041f"},
    {file = "pytest_django-4.1.0-py3-none-any.whl", hash = "sha256:10e384e6b8912ded92db64c58be8139d9ae23fb8361e5fc139d8e4f8fc601bc2"},
]
pytest-randomly = [
    {file = "pytest-randomly-3.5.0.tar.gz", hash = "sha256:440cec143fd9b0adeb072006c71e0294402a2bc2ccd08079c2341087ba4cf2d1"},
    {file = "pytest_randomly-3.5.0-py3-none-any.whl", hash = "sha256:9db10d160237f3f8ee60cef72e4cb9ea88d2893c9dd5c8aa334b060cdeb67c3a"},
]
pytest-testmon = [
    {file = "pytest-testmon-1.0.3.tar.gz", hash = "sha256:927a73dd510b90a2e4a48ea4d37e82c4490b56caa745663262024ea0cd278169"},
]
pytest-timeout = [
    {file = "pytest-timeout-1.4.2.tar.gz", hash = "sha256:20b3113cf6e4e80ce2d403b6fb56e9e1b871b510259206d40ff8d609f48bda76"},
    {file = "pytest_timeout-1.4.2-py2.py3-none-any.whl", hash = "sha256:541d7aa19b9a6b4e475c759fd6073ef43d7cdc9a92d95644c260076eb257a063"},
]
python-dateutil = [
    {file = "python-dateutil-2.8.1.tar.gz", hash = "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c"},
    {file = "python_dateutil-2.8.1-py2.py3-none-any.whl", hash = "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a"},
]
python-decouple = [
    {file = "python-decouple-3.4.tar.gz", hash = "sha256:2e5adb0263a4f963b58d7407c4760a2465d464ee212d733e2a2c179e54c08d8f"},
    {file = "python_decouple-3.4-py3-none-any.whl", hash = "sha256:a8268466e6389a639a20deab9d880faee186eb1eb6a05e54375bdf158d691981"},
]
python-slugify = [
    {file = "python-slugify-4.0.1.tar.gz", hash = "sha256:69a517766e00c1268e5bbfc0d010a0a8508de0b18d30ad5a1ff357f8ae724270"},
]
pytz = [
    {file = "pytz-2020.5-py2.py3-none-any.whl", hash = "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4"},
    {file = "pytz-2020.5.tar.gz", hash = "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5"},
]
pyyaml = [
    {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"},
    {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"},
    {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"},
    {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"},
    {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"},
    {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"},
    {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"},
    {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"},
    {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"},
    {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"},
    {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"},
    {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"},
    {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"},
    {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"},
    {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"},
    {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"},
    {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"},
    {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"},
    {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"},
    {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"},
    {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"},
]
requests = [
    {file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"},
    {file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"},
]
restructuredtext-lint = [
    {file = "restructuredtext_lint-1.3.2.tar.gz", hash = "sha256:d3b10a1fe2ecac537e51ae6d151b223b78de9fafdd50e5eb6b08c243df173c80"},
]
"ruamel.yaml" = [
    {file = "ruamel.yaml-0.16.12-py2.py3-none-any.whl", hash = "sha256:012b9470a0ea06e4e44e99e7920277edf6b46eee0232a04487ea73a7386340a5"},
    {file = "ruamel.yaml-0.16.12.tar.gz", hash = "sha256:076cc0bc34f1966d920a49f18b52b6ad559fbe656a0748e3535cf7b3f29ebf9e"},
]
"ruamel.yaml.clib" = [
    {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:28116f204103cb3a108dfd37668f20abe6e3cafd0d3fd40dba126c732457b3cc"},
    {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:daf21aa33ee9b351f66deed30a3d450ab55c14242cfdfcd377798e2c0d25c9f1"},
    {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-win32.whl", hash = "sha256:30dca9bbcbb1cc858717438218d11eafb78666759e5094dd767468c0d577a7e7"},
    {file = "ruamel.yaml.clib-0.2.2-cp27-cp27m-win_amd64.whl", hash = "sha256:f6061a31880c1ed6b6ce341215336e2f3d0c1deccd84957b6fa8ca474b41e89f"},
    {file = "ruamel.yaml.clib-0.2.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:73b3d43e04cc4b228fa6fa5d796409ece6fcb53a6c270eb2048109cbcbc3b9c2"},
    {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-macosx_10_6_intel.whl", hash = "sha256:53b9dd1abd70e257a6e32f934ebc482dac5edb8c93e23deb663eac724c30b026"},
    {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:839dd72545ef7ba78fd2aa1a5dd07b33696adf3e68fae7f31327161c1093001b"},
    {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:1236df55e0f73cd138c0eca074ee086136c3f16a97c2ac719032c050f7e0622f"},
    {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-win32.whl", hash = "sha256:b1e981fe1aff1fd11627f531524826a4dcc1f26c726235a52fcb62ded27d150f"},
    {file = "ruamel.yaml.clib-0.2.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4e52c96ca66de04be42ea2278012a2342d89f5e82b4512fb6fb7134e377e2e62"},
    {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:a873e4d4954f865dcb60bdc4914af7eaae48fb56b60ed6daa1d6251c72f5337c"},
    {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ab845f1f51f7eb750a78937be9f79baea4a42c7960f5a94dde34e69f3cce1988"},
    {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:2fd336a5c6415c82e2deb40d08c222087febe0aebe520f4d21910629018ab0f3"},
    {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-win32.whl", hash = "sha256:e9f7d1d8c26a6a12c23421061f9022bb62704e38211fe375c645485f38df34a2"},
    {file = "ruamel.yaml.clib-0.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:2602e91bd5c1b874d6f93d3086f9830f3e907c543c7672cf293a97c3fabdcd91"},
    {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:44c7b0498c39f27795224438f1a6be6c5352f82cb887bc33d962c3a3acc00df6"},
    {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8e8fd0a22c9d92af3a34f91e8a2594eeb35cba90ab643c5e0e643567dc8be43e"},
    {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:75f0ee6839532e52a3a53f80ce64925ed4aed697dd3fa890c4c918f3304bd4f4"},
    {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-win32.whl", hash = "sha256:464e66a04e740d754170be5e740657a3b3b6d2bcc567f0c3437879a6e6087ff6"},
    {file = "ruamel.yaml.clib-0.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:52ae5739e4b5d6317b52f5b040b1b6639e8af68a5b8fd606a8b08658fbd0cab5"},
    {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df5019e7783d14b79217ad9c56edf1ba7485d614ad5a385d1b3c768635c81c0"},
    {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:5254af7d8bdf4d5484c089f929cb7f5bafa59b4f01d4f48adda4be41e6d29f99"},
    {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8be05be57dc5c7b4a0b24edcaa2f7275866d9c907725226cdde46da09367d923"},
    {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-win32.whl", hash = "sha256:74161d827407f4db9072011adcfb825b5258a5ccb3d2cd518dd6c9edea9e30f1"},
    {file = "ruamel.yaml.clib-0.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:058a1cc3df2a8aecc12f983a48bda99315cebf55a3b3a5463e37bb599b05727b"},
    {file = "ruamel.yaml.clib-0.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6ac7e45367b1317e56f1461719c853fd6825226f45b835df7436bb04031fd8a"},
    {file = "ruamel.yaml.clib-0.2.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:b4b0d31f2052b3f9f9b5327024dc629a253a83d8649d4734ca7f35b60ec3e9e5"},
    {file = "ruamel.yaml.clib-0.2.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1f8c0a4577c0e6c99d208de5c4d3fd8aceed9574bb154d7a2b21c16bb924154c"},
    {file = "ruamel.yaml.clib-0.2.2-cp39-cp39-win32.whl", hash = "sha256:46d6d20815064e8bb023ea8628cfb7402c0f0e83de2c2227a88097e239a7dffd"},
    {file = "ruamel.yaml.clib-0.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:6c0a5dc52fc74eb87c67374a4e554d4761fd42a4d01390b7e868b30d21f4b8bb"},
    {file = "ruamel.yaml.clib-0.2.2.tar.gz", hash = "sha256:2d24bd98af676f4990c4d715bcdc2a60b19c56a3fb3a763164d2d8ca0e806ba7"},
]
safety = [
    {file = "safety-1.10.3-py2.py3-none-any.whl", hash = "sha256:5f802ad5df5614f9622d8d71fedec2757099705c2356f862847c58c6dfe13e84"},
    {file = "safety-1.10.3.tar.gz", hash = "sha256:30e394d02a20ac49b7f65292d19d38fa927a8f9582cdfd3ad1adbbc66c641ad5"},
]
six = [
    {file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
    {file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
]
smmap = [
    {file = "smmap-3.0.5-py2.py3-none-any.whl", hash = "sha256:7bfcf367828031dc893530a29cb35eb8c8f2d7c8f2d0989354d75d24c8573714"},
    {file = "smmap-3.0.5.tar.gz", hash = "sha256:84c2751ef3072d4f6b2785ec7ee40244c6f45eb934d9e543e2c51f1bd3d54c50"},
]
snowballstemmer = [
    {file = "snowballstemmer-2.1.0-py2.py3-none-any.whl", hash = "sha256:b51b447bea85f9968c13b650126a888aabd4cb4463fca868ec596826325dedc2"},
    {file = "snowballstemmer-2.1.0.tar.gz", hash = "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"},
]
sortedcontainers = [
    {file = "sortedcontainers-2.3.0-py2.py3-none-any.whl", hash = "sha256:37257a32add0a3ee490bb170b599e93095eed89a55da91fa9f48753ea12fd73f"},
    {file = "sortedcontainers-2.3.0.tar.gz", hash = "sha256:59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1"},
]
sphinx = [
    {file = "Sphinx-3.4.3-py3-none-any.whl", hash = "sha256:c314c857e7cd47c856d2c5adff514ac2e6495f8b8e0f886a8a37e9305dfea0d8"},
    {file = "Sphinx-3.4.3.tar.gz", hash = "sha256:41cad293f954f7d37f803d97eb184158cfd90f51195131e94875bc07cd08b93c"},
]
sphinx-autodoc-typehints = [
    {file = "sphinx-autodoc-typehints-1.11.1.tar.gz", hash = "sha256:244ba6d3e2fdb854622f643c7763d6f95b6886eba24bec28e86edf205e4ddb20"},
    {file = "sphinx_autodoc_typehints-1.11.1-py3-none-any.whl", hash = "sha256:da049791d719f4c9813642496ee4764203e317f0697eb75446183fa2a68e3f77"},
]
sphinxcontrib-applehelp = [
    {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
    {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"},
]
sphinxcontrib-devhelp = [
    {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
    {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
]
sphinxcontrib-htmlhelp = [
    {file = "sphinxcontrib-htmlhelp-1.0.3.tar.gz", hash = "sha256:e8f5bb7e31b2dbb25b9cc435c8ab7a79787ebf7f906155729338f3156d93659b"},
    {file = "sphinxcontrib_htmlhelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:3c0bc24a2c41e340ac37c85ced6dafc879ab485c095b1d65d2461ac2f7cca86f"},
]
sphinxcontrib-jsmath = [
    {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
    {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
]
sphinxcontrib-qthelp = [
    {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
    {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
]
sphinxcontrib-serializinghtml = [
    {file = "sphinxcontrib-serializinghtml-1.1.4.tar.gz", hash = "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc"},
    {file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"},
]
sqlparse = [
    {file = "sqlparse-0.4.1-py3-none-any.whl", hash = "sha256:017cde379adbd6a1f15a61873f43e8274179378e95ef3fede90b5aa64d304ed0"},
    {file = "sqlparse-0.4.1.tar.gz", hash = "sha256:0f91fd2e829c44362cbcfab3e9ae12e22badaa8a29ad5ff599f9ec109f0454e8"},
]
stevedore = [
    {file = "stevedore-3.3.0-py3-none-any.whl", hash = "sha256:50d7b78fbaf0d04cd62411188fa7eedcb03eb7f4c4b37005615ceebe582aa82a"},
    {file = "stevedore-3.3.0.tar.gz", hash = "sha256:3a5bbd0652bf552748871eaa73a4a8dc2899786bc497a2aa1fcb4dcdb0debeee"},
]
structlog = [
    {file = "structlog-20.2.0-py2.py3-none-any.whl", hash = "sha256:33dd6bd5f49355e52c1c61bb6a4f20d0b48ce0328cc4a45fe872d38b97a05ccd"},
    {file = "structlog-20.2.0.tar.gz", hash = "sha256:af79dfa547d104af8d60f86eac12fb54825f54a46bc998e4504ef66177103174"},
]
testfixtures = [
    {file = "testfixtures-6.17.1-py2.py3-none-any.whl", hash = "sha256:9ed31e83f59619e2fa17df053b241e16e0608f4580f7b5a9333a0c9bdcc99137"},
    {file = "testfixtures-6.17.1.tar.gz", hash = "sha256:5ec3a0dd6f71cc4c304fbc024a10cc293d3e0b852c868014b9f233203e149bda"},
]
text-unidecode = [
    {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"},
    {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"},
]
toml = [
    {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
    {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
tomlkit = [
    {file = "tomlkit-0.7.0-py2.py3-none-any.whl", hash = "sha256:6babbd33b17d5c9691896b0e68159215a9387ebfa938aa3ac42f4a4beeb2b831"},
    {file = "tomlkit-0.7.0.tar.gz", hash = "sha256:ac57f29693fab3e309ea789252fcce3061e19110085aa31af5446ca749325618"},
]
traitlets = [
    {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"},
    {file = "traitlets-5.0.5.tar.gz", hash = "sha256:178f4ce988f69189f7e523337a3e11d91c786ded9360174a3d9ca83e79bc5396"},
]
typed-ast = [
    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7703620125e4fb79b64aa52427ec192822e9f45d37d4b6625ab37ef403e1df70"},
    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:c9aadc4924d4b5799112837b226160428524a9a45f830e0d0f184b19e4090487"},
    {file = "typed_ast-1.4.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:9ec45db0c766f196ae629e509f059ff05fc3148f9ffd28f3cfe75d4afb485412"},
    {file = "typed_ast-1.4.2-cp35-cp35m-win32.whl", hash = "sha256:85f95aa97a35bdb2f2f7d10ec5bbdac0aeb9dafdaf88e17492da0504de2e6400"},
    {file = "typed_ast-1.4.2-cp35-cp35m-win_amd64.whl", hash = "sha256:9044ef2df88d7f33692ae3f18d3be63dec69c4fb1b5a4a9ac950f9b4ba571606"},
    {file = "typed_ast-1.4.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c1c876fd795b36126f773db9cbb393f19808edd2637e00fd6caba0e25f2c7b64"},
    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:5dcfc2e264bd8a1db8b11a892bd1647154ce03eeba94b461effe68790d8b8e07"},
    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8db0e856712f79c45956da0c9a40ca4246abc3485ae0d7ecc86a20f5e4c09abc"},
    {file = "typed_ast-1.4.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:d003156bb6a59cda9050e983441b7fa2487f7800d76bdc065566b7d728b4581a"},
    {file = "typed_ast-1.4.2-cp36-cp36m-win32.whl", hash = "sha256:4c790331247081ea7c632a76d5b2a265e6d325ecd3179d06e9cf8d46d90dd151"},
    {file = "typed_ast-1.4.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d175297e9533d8d37437abc14e8a83cbc68af93cc9c1c59c2c292ec59a0697a3"},
    {file = "typed_ast-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf54cfa843f297991b7388c281cb3855d911137223c6b6d2dd82a47ae5125a41"},
    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:b4fcdcfa302538f70929eb7b392f536a237cbe2ed9cba88e3bf5027b39f5f77f"},
    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:987f15737aba2ab5f3928c617ccf1ce412e2e321c77ab16ca5a293e7bbffd581"},
    {file = "typed_ast-1.4.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:37f48d46d733d57cc70fd5f30572d11ab8ed92da6e6b28e024e4a3edfb456e37"},
    {file = "typed_ast-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:36d829b31ab67d6fcb30e185ec996e1f72b892255a745d3a82138c97d21ed1cd"},
    {file = "typed_ast-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8368f83e93c7156ccd40e49a783a6a6850ca25b556c0fa0240ed0f659d2fe496"},
    {file = "typed_ast-1.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:963c80b583b0661918718b095e02303d8078950b26cc00b5e5ea9ababe0de1fc"},
    {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e683e409e5c45d5c9082dc1daf13f6374300806240719f95dc783d1fc942af10"},
    {file = "typed_ast-1.4.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:84aa6223d71012c68d577c83f4e7db50d11d6b1399a9c779046d75e24bed74ea"},
    {file = "typed_ast-1.4.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a38878a223bdd37c9709d07cd357bb79f4c760b29210e14ad0fb395294583787"},
    {file = "typed_ast-1.4.2-cp38-cp38-win32.whl", hash = "sha256:a2c927c49f2029291fbabd673d51a2180038f8cd5a5b2f290f78c4516be48be2"},
    {file = "typed_ast-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0c74e5579af4b977c8b932f40a5464764b2f86681327410aa028a22d2f54937"},
    {file = "typed_ast-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07d49388d5bf7e863f7fa2f124b1b1d89d8aa0e2f7812faff0a5658c01c59aa1"},
    {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:240296b27397e4e37874abb1df2a608a92df85cf3e2a04d0d4d61055c8305ba6"},
    {file = "typed_ast-1.4.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:d746a437cdbca200622385305aedd9aef68e8a645e385cc483bdc5e488f07166"},
    {file = "typed_ast-1.4.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:14bf1522cdee369e8f5581238edac09150c765ec1cb33615855889cf33dcb92d"},
    {file = "typed_ast-1.4.2-cp39-cp39-win32.whl", hash = "sha256:cc7b98bf58167b7f2db91a4327da24fb93368838eb84a44c472283778fc2446b"},
    {file = "typed_ast-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:7147e2a76c75f0f64c4319886e7639e490fee87c9d25cb1d4faef1d8cf83a440"},
    {file = "typed_ast-1.4.2.tar.gz", hash = "sha256:9fc0b3cb5d1720e7141d103cf4819aea239f7d136acf9ee4a69b047b7986175a"},
]
typing-extensions = [
    {file = "typing_extensions-3.7.4.3-py2-none-any.whl", hash = "sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f"},
    {file = "typing_extensions-3.7.4.3-py3-none-any.whl", hash = "sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918"},
    {file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"},
]
urllib3 = [
    {file = "urllib3-1.26.2-py2.py3-none-any.whl", hash = "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"},
    {file = "urllib3-1.26.2.tar.gz", hash = "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08"},
]
wcwidth = [
    {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
    {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
]
wemake-python-styleguide = [
    {file = "wemake-python-styleguide-0.14.1.tar.gz", hash = "sha256:e13dc580fa56b7b548de8da170bccb8ddff2d4ab026ca987db8a9893bf8a7b5b"},
    {file = "wemake_python_styleguide-0.14.1-py3-none-any.whl", hash = "sha256:73a501e0547275287a2b926515c000cc25026a8bceb9dcc1bf73ef85a223a3c6"},
]
yamllint = [
    {file = "yamllint-1.25.0-py2.py3-none-any.whl", hash = "sha256:c7be4d0d2584a1b561498fa9acb77ad22eb434a109725c7781373ae496d823b3"},
    {file = "yamllint-1.25.0.tar.gz", hash = "sha256:b1549cbe5b47b6ba67bdeea31720f5c51431a4d0c076c1557952d841f7223519"},
]

docker-run.sh METASEP
docker-compose build
docker-compose run --rm web python manage.py migrate
docker-compose up

docker-compose.yml METASEP
---

# Default compose file for development and production.
# Should be used directly in development.
# Automatically loads `docker-compose.override.yml` if it exists.
# No extra steps required.
# Should be used together with `docker/docker-compose.prod.yml`
# in production.

version: "3.6"
services:
  db:
    image: "postgres:9.6.9-alpine"
    restart: unless-stopped
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - webnet
    env_file: ./config/.env

  web:
    <<: &web
      # Image name is changed in production:
      image: "autspaces:dev"
      build:
        target: development_build
        context: .
        dockerfile: ./docker/django/Dockerfile
        args:
          DJANGO_ENV: development
        cache_from:
          - "autspaces:dev"
          - "autspaces:latest"
          - "*"

      volumes:
        - django-static:/var/www/django/static
      depends_on:
        - db
      networks:
        - webnet
      env_file: ./config/.env
      environment:
        DJANGO_DATABASE_HOST: db

    command: python -Wd manage.py runserver 0.0.0.0:8000
    healthcheck:
      test: |
        /usr/bin/test $$(
          /usr/bin/curl --fail http://localhost:8000/health/?format=json
          --write-out "%{http_code}" --silent --output /dev/null
        ) -eq 200
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s

networks:
  # Network for your internals, use it by default:
  webnet:

volumes:
  pgdata:
  django-static:

docker-compose.override.yml METASEP
---

# This docker-compose file is required to bind ports in development,
# since binding ports in regular compose file will ruin scaling
# in production. Due to how `ports` directive is merged with two files.
#
# This file is ignored in production, but
# it is automatically picked up in development with:
#

version: "3.6"
services:
  web:
    ports:
      # We only bind ports directly in development:
      - "8000:8000"
    volumes:
      # We only mount source code in development:
      - .:/code

dev_readme.md METASEP
# How to start website

If you're interested in building and running the AutSPACE platform, read on!

## Setup
Before starting, please check that the following minimum requirements have been completed.

1. Install [Docker](https://www.docker.com/products/docker-desktop). (Latest stable release, version 20.10.5 or greater)
2. Install [Docker Compose](https://docs.docker.com/compose/install/). (Latest stable release, version 1.28.5 or greater)
3. Create an [Open Humans](https://www.openhumans.org/) account.
4. Some version of Python 3.x.x.

## Installation
Project installation can be tricky, but like all things, progress is made one step at a time. 

1. [Clone](#cloning-the-repository) the repository at [AutSPACEs](https://github.com/alan-turing-institute/AutSPACEs)
2. Within the `config` directory, copy `.env.template` to `.env`. 
  Note: ***DO NOT UPLOAD THESE .ENV FILES ONTO GITHUB*** It's the equivalent of posting your passport ID on Twitter. Don't do it.

### Open Humans Project Creation
This step is a little tricky, but you're almost there. 

1. Login to [OpenHumans](openhumans.org). 
2. Navigate to [Manage Project](https://www.openhumans.org/direct-sharing/projects/manage/).
3. Create a new Oauth2 Data Request Project on Open Humans. 
4. Populate the required fields as directed. 
5. In the `Redirect URL` field, enter `http://localhost:8000/openhumans/complete`.
6. Click `Create Project`.

You'll need to obtain the Client ID and Client Secret for the OAuth project you've created. 

1. Navigate to [Manage Project](https://www.openhumans.org/direct-sharing/projects/manage/).
2. Click the newly created project. 
3. Copy and paste somewhere safe the `Client ID` and `Client Secret` under `OAuth2 Credentials`. 

### Project Configuration 
Within `.env` there are four different fields that must be populated for the project to build.

#### Django Secret Key Generation
1. Open `.env` in your favorite editor, and using `python3`, follow the instructions under the `django` header to copy/paste the generated secret key to `DJANGO_SECRET_KEY` 

The following...
`DJANGO_SECRET_KEY=__CHANGEME__`

should look something like this, where XXXXXXXXXXXXXXXXXXXXXX is the generated key. 
`DJANGO_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXX`

#### Configuring OpenHumans
Further down the `.env` file, you should see three texts: `OPENHUMANS_CLIENT_ID`, `OPENHUMANS_CLIENT_SECRET`, and `OPENHUMANS_APP_BASE_URL`.

1. Copy the `Client ID` and `Client Secret` that you've copied previously into `OPENHUMANS_CLIENT_ID` and `OPENHUMANS_CLIENT_SECRET`, respectively.
It should look something like this, where XXXXXXXXXXXXXXXXXXXXXX are the inputted information. 
```
OPENHUMANS_CLIENT_ID=XXXXXXXXXXXXXXXXXXXXXX
OPENHUMANS_CLIENT_SECRET=XXXXXXXXXXXXXXXXXXXXXX
````

2. Type the following url into `OPENHUMANS_APP_BASE_URL`.
It should look like this!

```
OPENHUMANS_APP_BASE_URL="http://localhost:8000"
```

3. You're done!

## Running the Project
The project builds and runs in a self-contained environment called Docker. This means developer environments are preserved, and you don't need to mess with any dependency management or installation.

1. Open up Terminal or Command Line in the root level of the repository and execute the following command: `./docker-run.sh`

   If this step fails with the following error
   ```qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory```
   
   You may have an M1 chip in your computer. Try again after setting your local `DOCKER_DEFAULT_PLATFORM` to linux/amd64
   ```export DOCKER_DEFAULT_PLATFORM=linux/amd64```

2. Open your browser to `http://localhost:8000`

*This will display the AutSPACEs website.* Yay!

Note: Please note that certain aspects of the website may not be fully functional. ;)

## Glossary 

* Clone: make a copy of all the files and folder in the repository on your computer
* Docker: a tool which creates an individual place (called a 'container') for a software project which is set up for that project to run.
* Fork: your fork is your own personal copy of the repository, where you can make changes without affecting the main repository until you make a pull request. 
* Git: is a free, open source tool that is useful for version control (keeping a record of and managing changes to software code)
* GitHub: GitHub is an online tool which makes it easier for people to work collaboratively using Git. 
* Repository: this is a place which holds all the files and folders specific to one project. On GitHub, this is where people can work on a project together. 
* Root level: this is the level of the project which contains all the others as files and subfolders
* Terminal: this is an application on your computer which allows you to use code to modify your computer's software and files. 

## How-Tos 

### Cloning the Repository
  1. **Fork** the repository by clicking on the Fork icon at the top right hand corner of the page. 
  2. Above the list of files, click the green **Code** button.
  3. Clone the repository into your local directory. 
  4. Open terminal to the project directory.
  5. Type 'git clone', and then paste the URL you copied earlier. It will look like this, with your GitHub username instead of YOUR-USERNAME:
  >$ git clone https://github.com/YOUR-USERNAME/AutSPACEs
  7. Press enter. Your local clone will be created. 

### Extra Tips

*If you aren't sure how to get to the root repository, you can find it more easily by following these steps:* 

1. Type `git config --global alias.root 'rev-parse --show-toplevel` into your terminal. This will create a simpler command to take you to the root repository. 
2. Type `cd $(git root)` into your terminal. This will take you to the root of the repository you are in. 

#### Accessing the database

To access the PostgreSQL database:

1. Run `docker exec -it autspaces_db_1 bash`
2. In the subsequent terminal, run `psql --username=autspaces`

### Docker overview 

You might find the chapter on [reproducible computational environments](https://the-turing-way.netlify.app/reproducible-research/renv.html) and spectifically the section on [containers](https://the-turing-way.netlify.app/reproducible-research/renv/renv-containers.html) in _The Turing Way_ useful!

contributing-guidelines.md METASEP
# Contributing to AutSPACEs

:tada::balloon::cake: **Welcome to The AutSPACEs repository!** :cake::balloon::tada:

:dizzy::hatched_chick::sunny: _We're excited that you're here and want to contribute._ :sunny::hatched_chick::dizzy:

We want to ensure that every user and contributor feels welcome, included and supported to participate in _AutSPACEs_ community.
We hope that the information provided in this document will make it as easy as possible for you to get involved.

We welcome all contributions to this project via GitHub issues and pull requests.
Please follow these guidelines to make sure your contributions can be easily integrated into the projects.
As you start contributing to _AutSPACEs_, don't forget that your ideas are more important than perfect pull requests. :heart:

If you have any questions that aren't discussed below, please let us know through one of the many ways to [get in touch](#get-in-touch).

## Table of contents

Been here before? Already know what you're looking for in this guide? Jump to the following sections:

- [Joining the community](#joining-the-community)
- [Inclusivity](#inclusivity)
- [Get in touch](#get-in-touch)
- [Contributing through GitHub](#contributing-through-github)
- [Writing in Markdown](#writing-in-markdown)
- [Where to start: issues](#where-to-start-issues)
  - [Issue labels](#issue-labels)
- [Making a change with a pull request](#making-a-change-with-a-pull-request)
- [Recognising Contributions](#recognising-contributions)

## Joining the community

_AutSPACEs_ is a community-led and collaboratively developed project. 
We, therefore, require that all our members and their contributions **adhere to our code of conduct**.
Please familiarize yourself with our code of conduct that lists the expected behaviours. 

## Inclusivity

_AutSPACEs_ aims to be inclusive to people from all walks of life and to all research fields.
These intentions must be reflected in the contributions that we make to the project.

In addition to the code of conduct, we encourage intentional, inclusive actions from contributors to _AutSPACEs_.
Here are a few examples of such actions:

- use respectful, gender-neutral and inclusive language (learn more about [inclusive writing](https://www2.le.ac.uk/offices/ld/all-resources/writing/writing-resources/inclusive), resource by University of Leicester).
- make sure that the colour palettes are accessible to colour-blind readers and contributors,

Here's a useful blog post on [tips for designing scientific figures for color blind readers](http://www.somersault1824.com/tips-for-designing-scientific-figures-for-color-blind-readers) by Luk at [Somersault 1824](http://www.somersault1824.com).

## Contributing through GitHub

[Git][git] is a really useful tool for version control. 
[GitHub][github] sits on top of Git and supports collaborative and distributed working.

We know that it can be daunting to start using Git and GitHub if you haven't worked with them in the past, but _AutSPACE_ maintainers are here to help you figure out any of the jargon or confusing instructions you encounter! :heart:

In order to contribute via GitHub, you'll need to set up a free account and sign in.
Here are some [instructions](https://help.github.com/articles/signing-up-for-a-new-github-account/) to help you get going.
Remember that you can ask us any questions you need to along the way.

## Writing in Markdown

GitHub has a helpful page on [getting started with writing and formatting on GitHub](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github).

Most of the writing that you'll do will be in [Markdown][markdown].
You can think of Markdown as a few little symbols around your text that will allow GitHub to render the text with a little bit of formatting.
For example, you could write words as **bold** (`**bold**`), or in _italics_ (`_italics_`), or as a [link][rick-roll] (`[link](https://youtu.be/dQw4w9WgXcQ)`) to another webpage.

Also when writing in Markdown, please start each new sentence on a new line.
While these formats in the same way as if the new line wasn't included, it makes the [diffs produced during the pull request](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests) review easier to read! :sparkles:


## Where to start: issues

Before you open a new issue, please check if any of our open issues cover your idea already.

## Making a change with a pull request

We appreciate all contributions to _AutSPACEs_.

**THANK YOU** for helping us build this useful resource. :sparkles::star2::dizzy:

The following steps are a guide to help you contribute in a way that will be easy for everyone to review and accept with ease :sunglasses:.

### 1. Comment on existing issues or open a new issue referencing your addition.

This allows other members of the _AutSPACEs_ team to confirm that you aren't overlapping with work that's currently underway and that everyone is on the same page with the goal of the work you're going to carry out.

[This blog](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) is a nice explanation of why putting this work in upfront is so useful to everyone involved.

### 2. Fork AutSPACEs

This is now your own unique copy of _AutSPACEs_.
Changes here won't affect anyone else's work, so it's a safe space to explore edits to the code!

Make sure to [keep your fork up to date][github-syncfork] with the master repository, otherwise, you can end up with lots of dreaded [merge conflicts][github-mergeconflicts].
If you prefer working in the browser, [these instructions](https://github.com/KirstieJane/STEMMRoleModels/wiki/Syncing-your-fork-to-the-original-repository-via-the-browser) describe how to sync your fork to the original repository via GitHub.

### 3. Make the changes you've discussed

Try to keep the changes focused.
If you submit a large amount of work all in one go it will be much more work for whoever is reviewing your pull request.
[Help them help you.][jerry-maguire] :wink:

While making your changes, commit often and write good, detailed commit messages.
[This blog](https://chris.beams.io/posts/git-commit/) explains how to write a good Git commit message and why it matters.
It is also perfectly fine to have a lot of commits - including ones that break code.
A good rule of thumb is to push up to GitHub when you _do_ have passing tests then the continuous integration (CI) has a good chance of passing everything. 😸

If you feel tempted to "branch out" then please make a [new branch][github-branches] and a [new issue][turing-way-issues] to go with it. [This blog](https://nvie.com/posts/a-successful-git-branching-model/) details the different Git branching models.

Please do not re-write history!
That is, please do not use the [rebase](https://help.github.com/en/articles/about-git-rebase) command to edit previous commit messages, combine multiple commits into one, or delete or revert commits that are no longer necessary.

Are you new to Git and GitHub or just want a detailed guide on getting started with version control? Check out The Turing Way's chapter on [Version Control](https://the-turing-way.netlify.com/version_control/version_control.html).

### 4. Submit a pull request

We encourage you to open a pull request as early in your contributing process as possible.
This allows everyone to see what is currently being worked on.
It also provides you, the contributor, feedback in real-time from both the community and the continuous integration as you make commits (which will help prevent stuff from breaking).

If you have opened the pull request early and know that its contents are not ready for review or to be merged, add "[WIP]" at the start of the pull request title, which stands for "Work in Progress".
When you are happy with it and are happy for it to be merged into the main repository, change the "[WIP]" in the title of the pull request to "[Ready for review]".

A member of _AutSPACEs_ community will then review your changes to confirm that they can be merged into the main repository.
A [review][github-review] will probably consist of a few questions to help clarify the work you've done.
Keep an eye on your GitHub notifications and be prepared to join in that conversation.

You can update your [fork][github-fork] of _AutSPACEs_ and the pull request will automatically update with those changes.
You don't need to submit a new pull request when you make a change in response to a review.

You can also submit pull requests to other contributors' branches!
Do you see an open pull requeset that you find interesting and want to contribute to?
Simply make your edits on their files and open a pull request to their branch!

GitHub has a [nice introduction][github-flow] to the pull request workflow, but please [get in touch](#get-in-touch) if you have any questions :balloon:.

## Recognising Contributions

We welcome and recognise all kinds of contributions, from fixing small errors, to developing documentation, maintaining the project infrastructure, writing chapters or reviewing existing resources.

_AutSPACEs_ follows the [all-contributors][all-contributors] specifications.
The all-contributors bot usage is described [here](https://allcontributors.org/docs/en/bot/usage).
You can see a list of current contributors at the bottom of the repository's README page. 😍

To add yourself or someone else as a contributor, comment on the relevant Issue or Pull Request with the following:

```
@all-contributors please add <username> for <contributions>
```

You can see the [Emoji Key (Contribution Types Reference)](https://allcontributors.org/docs/en/emoji-key) for a list of valid `<contribution>` types.
The bot will then create a Pull Request to add the contributor and reply with the pull request details.

**PLEASE NOTE: Only one contributor can be added with the bot at a time!**
Add each contributor in turn, merge the pull request and delete the branch (`all-contributors/add-<username>`) before adding another one.
Otherwise, you can end up with dreaded [merge conflicts][github-mergeconflicts].
Therefore, please check the [open pull requests](https://github.com/alan-turing-institute/the-turing-way/pulls) first to make sure there aren't any open requests from the bot before adding another.

What happens if you accidentally run the bot before the previous run was merged and you got those pesky merge conflicts?
(Don't feel bad, we have all done it! 🙈)
Simply close the pull request and delete the branch (`all-contributors/add-<username>`).
If you are unable to do this for any reason, please let us know and we will be very happy to help!

Finally, don't forget to add yourself to the list of contributors!

---

_These Contributing Guidelines have been adapted from the [Contributing Guideleines](https://github.com/alan-turing-institute/the-turing-way/blob/master/CONTRIBUTING.md) of [The Turing Way](https://github.com/alan-turing-institute/the-turing-way), which were themselvse adapted from the [Contributing Guidelines](https://github.com/bids-standard/bids-starter-kit/blob/master/CONTRIBUTING.md) of the [BIDS Starter Kit](https://github.com/bids-standard/bids-starter-kit). (License: CC-BY)_


code-of-conduct.md METASEP
# Autistica/Turing Citizen Science Project Code of Conduct

* [1 Introduction](#1-introduction)
* [2 Code of Conduct](#2-code-of-conduct)
  * [2.1 Expected Behaviour](21-expected-behaviours)
  * [2.2 Unacceptable Behaviour](#22-unacceptable-behaviour)
  * [2.3 Consequences of Unacceptable Behaviour](#23-consequences-of-unacceptable-behaviour)
  * [2.4 Feedback](#24-feedback)
* [3 Incident Reporting Guidelines](#3-incident-reporting-guidelines)
  * [3.1 Contact points](#31-contact-points)
  * [3.2 Alternate contact points](#32-alternate-contact-points)
  * [3.3 What to do if someone is in physical danger](#33-what-to-do-if-someone-is-in-physical-danger)
  * [3.4 Code of Conduct Enforcement](#34-code-of-conduct-enforcement)
* [4 Enforcement Manual](#4-enforcement-manual)
  * [4.1 The Code of Conduct Committee](#41-the-code-of-conduct-committee)
  * [4.2 Urgent Situations: Acting Unilaterally](#42-urgent-situations-acting-unilaterally)
  * [4.3 Less-Urgent Situations](#43-less-urgent-situations)
  * [4.4 Resolutions](#44-resolutions)
  * [4.5 Conflicts of Interest](#45-conflicts-of-interest)
* [5 Acknowledgements](#5-acknowledgements)

## 1 Introduction

The Autistica/Turing citizen science project is community-oriented and -led.
We value the involvement of everyone in the community.
We are committed to creating a friendly and respectful place for learning, teaching and contributing.
All participants in our in-person events and online communications are expected to show respect and courtesy to others at all times.

To make clear what is expected, everyone participating in activities associated with the Autistica/Turing citizen science project is required to conform to this Code of Conduct.
This Code of Conduct applies to all spaces managed by the Autistica/Turing citizen science project including, but not limited to, in-person focus groups and workshops, and communications online via GitHub.

The lead investigator of the Autistica/Turing citizen science project - Dr Kirstie Whitaker - is responsible for enforcing the Code of Conduct.
She can be contacted by emailing [kwhitaker@turing.ac.uk](mailto:kwhitaker@turing.ac.uk).
Reports may be reviewed by other members of the research team, unless there is a conflict of interest, and will be kept confidential.

## 2 Code of Conduct

The Autistica/Turing citizen science project is dedicated to providing a welcoming and supportive environment for all people, regardless of background or identity.
As such, we do not tolerate behaviour that is disrespectful to our community members or that excludes, intimidates, or causes discomfort to others.
We do not tolerate discrimination or harassment based on characteristics that include, but are not limited to: gender identity and expression, sexual orientation, disability, physical appearance, body size, citizenship, nationality, ethnic or social origin, pregnancy, familial status, veteran status, genetic information, religion or belief (or lack thereof), membership of a national minority, property, age, education, socio-economic status, technical choices, and experience level.

Everyone who participates in Autistica/Turing citizen science project activities is required to conform to this Code of Conduct.
This Code of Conduct applies to all spaces managed by the Autistica/Turing citizen science project including, but not limited to, in person focus groups and workshops, and communications online via GitHub.
By participating, contributors indicate their acceptance of the procedures by which the Autistica/Turing citizen science project research team resolves any Code of Conduct incidents, which may include storage and processing of their personal information.

### 2.1 Expected Behaviour

We are confident that our community members will together build a supportive and collaborative atmosphere at our events and during online communications.
The following bullet points set out explicitly what we hope you will consider to be appropriate community guidelines:

* **Be respectful of different viewpoints and experiences**. Do not engage in homophobic, racist, transphobic, ageist, ableist, sexist, or otherwise exclusionary behaviour.
* **Use welcoming and inclusive language**. Exclusionary comments or jokes, threats or violent language are not acceptable. Do not address others in an angry, intimidating, or demeaning manner. Be considerate of the ways the words you choose may impact others. Be patient and respectful of the fact that English is a second (or third or fourth!) language for some participants. Autistica has a [guide on inclusive language](https://www.autistica.org.uk/about-us/media-communications-guide)
* **Do not harass people**. Harassment includes unwanted physical contact, sexual attention, or repeated social contact. Know that consent is explicit, conscious and continuous—not implied. If you are unsure whether your behaviour towards another person is welcome, ask them. If someone tells you to stop, do so.
* **Respect the privacy and safety of others**. Do not take photographs of others without their permission. Do not share other participant’s personal experiences without their express permission. Note that posting (or threatening to post) personally identifying information of others without their consent ("doxing") is a form of harassment.
* **Be considerate of others’ participation**. Everyone should have an opportunity to be heard. In update sessions, please keep comments succinct so as to allow maximum engagement by all participants. Do not interrupt others on the basis of disagreement; hold such comments until they have finished speaking.
* **Don’t be a bystander**. If you see something inappropriate happening, speak up. If you don't feel comfortable intervening but feel someone should, please feel free to ask a member of the Code of Conduct response team for support.
* As an overriding general rule, please **be intentional in your actions and humble in your mistakes**.

All interactions should be professional regardless of platform: either online or in-person.
See [this explanation of the four social rules](https://www.recurse.com/manual#sub-sec-social-rules) - no feigning surprise, no well-actually's, no back-seat driving, no subtle -isms - for further recommendations for inclusive behaviours.

### 2.2 Unacceptable Behaviour

Examples of unacceptable behaviour by Autistica/Turing citizen science community members at any project event or platform include:

* written or verbal comments which have the effect of excluding people on the basis of membership of any specific group
* causing someone to fear for their safety, such as through stalking, following, or intimidation
* violent threats or language directed against another person
* the display of sexual or violent images
* unwelcome sexual attention
* nonconsensual or unwelcome physical contact
* sustained disruption of talks, events or communications
* insults or put downs
* sexist, racist, homophobic, transphobic, ableist, or exclusionary jokes
* excessive swearing
* incitement to violence, suicide, or self-harm
* continuing to initiate interaction (including photography or recording) with someone after being asked to stop
* publication of private communication without consent

### 2.3 Consequences of Unacceptable Behaviour

Participants who are asked to stop any inappropriate behaviour are expected to comply immediately.
This applies to all Autistica/Turing citizen science community events and platforms, either online or in-person.
If a participant engages in behaviour that violates this Code of Conduct, any member of the research team may warn the offender, ask them to leave the event or platform (without refund), or impose any other appropriate sanctions (see the [enforcement manual](#4-enforcement-manual) for details).

### 2.4 Feedback

This Code of Conduct is not intended as a static set of rules by which everyone must abide.
Rather, you are invited to make suggestions for updates or clarifications by contacting Dr Kirstie Whitaker at [kwhitaker@turing.ac.uk](mailto:kwhitaker@turing.ac.uk) or by making a pull request to this document on GitHub.

## 3 Incident Reporting Guidelines

### 3.1 Contact points

If you feel able to, please contact Kirstie Whitaker by email at [kwhitaker@turing.ac.uk](mailto:kwhitaker@turing.ac.uk).

### 3.2 Alternate contact points

If you do not feel comfortable contacting Kirstie Whitaker, please report an incident to James Cusack by email at [james.cusack@autistica.org.uk](mailto:james.cusack@autistica.org.uk).

### 3.3 What to do if someone is in physical danger

If you believe someone is in physical danger, please contact the appropriate emergency responders.

### 3.4 Code of Conduct Enforcement

A detailed enforcement policy is available in the Enforcement Manual below.

## 4 Enforcement Manual

This is the enforcement manual followed by the Autistica/Turing citizen science project research team.
It's used when we respond to an issue to make sure we're consistent and fair.
Enforcement of the Code of Conduct should be respectful and not include any harassing behaviours.

### 4.1 The Code of Conduct Committee

At time of writing the research team is small and therefore we do not have a Code of Conduct Committee.
Dr Kirstie Whitaker, as lead investigator of the Autistica/Turing citizen science research project will handle any Code of Conduct reports herself.

As the community grows, we will seek to build a committee of research team members and members of the autistic community.

### 4.2 Urgent Situations: Acting Unilaterally

If the incident involves physical danger, or involves a threat to anyone's safety (e.g. threats of violence), any member of the community may -- and should -- act unilaterally to protect the safety of any community member.
This can include contacting law enforcement (or other local personnel) and speaking on behalf of the Autistica or the Turing Institute.

If the act is ongoing, any community member may act immediately, before reaching consensus, to diffuse the situation.
In ongoing situations, any member may at their discretion employ any of the tools available in this enforcement manual, including bans and blocks online, or removal from a physical space.

In situations where an individual community member acts unilaterally, they must inform Kirstie Whitaker as soon as possible, and report their actions for review within 24 hours.

### 4.3 Less-Urgent Situations

Upon receiving a report of an incident, Kirstie Whitaker will review the incident and determine, to the best of her ability:

- whether this is an ongoing situation
- whether there is a threat to anyone's physical safety
- what happened
- whether this event constitutes a Code of Conduct violation
- who, if anyone, was the bad actor

This information will be collected either in person or in writing.
Kirstie Whitaker will provide a written summary of the information surrounding the incident.
All participants will be anonymised in the summary report, referred to as "Community Member 1", "Community Member 2", or "Research Team Member 1".
The "de-anonymising key" will be kept in a separate file and only accessed to link repeated reports against the same person over time.

Kirstie Whitaker will aim to have a resolution agreed upon within one week.
In the event that a resolution can't be determined in that time, Kirstie will respond to the reporter(s) with an update and projected timeline for resolution.

### 4.4 Resolutions

At the time of writing Dr Whitaker is the only enforcing member of the Code of Conduct reporting team.

Once a committee has been formed, the committee will agree on a resolution by consensus of all members investigating the report in question.
If the committee cannot reach consensus and deadlocks for over a week, Dr Whitaker, as lead investigator of the Autistica/Turing citizen science project, will break the tie.

Possible responses may include:

* A mediated conversation or agreement between the impacted community members.
* A request for a verbal or written apology, public or private, from a community member.
* A public announcement clarifying community responsibilities under the Code of Conduct.
* Nothing, if the issue reported is not a violation or outside of the scope of this Code of Conduct.
* A private in-person conversation between a member of the research team and the individual(s) involved.
  In this case, the person who has the conversation will provide a written summary for record keeping.
* A private written reprimand from a member of the research team to the individual(s) involved.
  In this case, the research team member will deliver that reprimand to the individual(s) over email, cc'ing Kirstie Whitaker for record keeping.
* A public announcement of an incident, ideally in the same venue that the violation occurred (i.e. on the listserv for a listserv violation; GitHub for a GitHub violation, etc.).
  The committee may choose to publish this message elsewhere for posterity.
* An imposed "time out" from online spaces.
  Kirstie Whitaker will communicate this "time out" to the individual(s) involved.
* A permanent or temporary ban from some or all Autistica/Turing citizen science project spaces (GitHub, in-person events etc).
  The research team will maintain records of all such bans so that they may be reviewed in the future, extended to a Code of Conduct safety team as it is built, or otherwise maintained.
  If a member of the community is removed from an event they will not be reimbursed for any part of the event that they miss.

Once a resolution is agreed upon, but before it is enacted, Kirstie Whitaker will contact the original reporter and any other affected parties and explain the proposed resolution.
Kirstie Whitaker will ask if this resolution is acceptable, and must note feedback for the record.
However, she is not required to act on this feedback.

### 4.5 Conflicts of Interest

In the event of any conflict of interest such that Dr Whitaker is not able to evaluate or enforce the reported violation, Jon Spiers will take Kirstie's place.

## 5. Acknowledgements

This code is adapted from the [Carpentries Code of Conduct](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html)  with sections from the [Alan Turing Institute Data Study Group Code of Conduct](https://docs.google.com/document/d/1iv2cizNPUwtEhHqaezAzjIoKkaIX02f7XbYmFMXDTGY/edit).
Both are used under the creative commons attribution license.

The Carpentries Code of Conduct was adapted from guidelines written by the [Django Project](https://www.djangoproject.com/conduct/enforcement-manual/), which was itself based on the [Ada Initiative template](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Responding_to_reports) and the [PyCon 2013 Procedure for Handling Harassment Incidents](https://us.pycon.org/2013/about/code-of-conduct/harassment-incidents/).
Contributors to the Carpentries Code of Conduct were: Adam Obeng, Aleksandra Pawlik, Bill Mills, Carol Willing, Erin Becker, Hilmar Lapp, Kara Woo, Karin Lagesen, Pauline Barmby, Sheila Miguez, Simon Waldman, Tracy Teal.

The Turing Institute Data Study Group Code of Conduct was heavily adapted from the [Citizen Lab Summer Institute 2017 Code of Conduct](https://citizenlab.ca/summerinstitute/codeofconduct.html) and used under a CC BY 2.5 CA license.
Citizen Lab based their Code of Conduct on the [xvzf Code of Conduct](http://xvzf.io/), the [Contributor Covenant](http://contributor-covenant.org/), the [Django Code of Conduct and Reporting Guide](https://www.djangoproject.com/conduct/) and we are also grateful for [this guidance from Ada Initiative](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Responding_to_reports).

We really appreciate the work that all of the communities linked above have put into creating such a well considered process.

This Code of Conduct is licensed under a [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/) (CC BY 4.0 CA) license which means you are free to share and adapt the work so long as the attribution to Kirstie Whitaker and the Autistica/Turing citizen science community is retained, along with the attribution to the Carpentries, the Alan Turing Institute Data Study Group organising team, Citizen Lab and the other resources.

README.md METASEP
# AutSPACEs
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-36-orange.svg?style=flat-square)](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

*Code respository for AutSPACEs: the Autistica/Turing citizen science platform*

## Welcome.

This repository **holds the code** for AutSPACEs. AutSPACEs is a citizen science platform co-created by autistic people and their supporters alongside researchers and the open source community.

It is linked to the [Autistica/Turing Citizen Science](https://github.com/alan-turing-institute/AutisticaCitizenScience) repository, which is used for **project management and to hold resources**. If you'd like to take part in anything which isn't directly related to building the platform, take a look there. There are lots of ways to get involved. You can find out more in the contributing guidelines.

The platform is currently being developed using the Python/Django web development framework. You can [Skip to Development Information](#development-information) or continue reading for more information about the project in general.

## Get the platform running

To get the current website to run on your local device please follow [these steps](/dev_readme.md).

Here is a useful resource for learning Django: https://tutorial.djangogirls.org/en/

## How to work with us

The issues list contains all the work that is still to be done to finish the platform. It also lists extra features that are not essential but which would make the platform better. Every issue is labelled to show what skills we think will be required to contribute to the platform.

Everyone is asked to follow our code of conduct and to look at the contributing guidelines for more information on how to get started.

You can also join our community by [getting in touch](#get-in-touch) with the research team.

## About the platform

AutSPACEs is a citizen science platform which will be used to investigate how sensory processing differences affect the ways autistic people navigate the world around them.

### Goals

The platform has four main goals:

1. **Collect**: to collect together the stories of autistic people and their supporters about how they are affected by sensory processing in their daily lives. This will form a qualitative dataset for research.
2. **Share**: to create a safe, autism-voice-first online environment for autistic people and their supporters to share their stories. These can then be read by others who can benefit from their experiences and insights.
3. **Educate**: to educate non-autistic people about the experiences of autistic people so that they can become better supporters to them, and to reduce misunderstandings and stigmas about autism.
4. **Change**: use research done on the dataset to inform policy-makers and people who build and design environments how to make those spaces better for autistic people.

### How it works

![How-it-works](/Citscicartoon.png)

Users of the platform have the option to view other's stories or to submit their own. They must sign in to submit. All users have the option of submitting their story for research, publishing their story on the platform itself, neither, or both. If it is published, it will first be moderated to make sure it follows the platform's code of conduct. While logged in, users will be able to view their own stories and change their consent options.

### How it is built

The platform is being developed using the Python/Django web development framework. Users will be able to share experiences through a website which will then be deposited into a backend database supported by [Open Humans](https://github.com/OpenHumans). A demo website for data transfer based on Open Humans and deployed using Django, can be found in the [Filemanagement Demo Repository](https://github.com/alan-turing-institute/autistica-filemanagement-demo).

The platform is entirely open source. All code is available to be used and adapted. Eveyone is invited to contribute.

The design for the platform is created according to specifications made by autistic people and their supporters. It is build with, for, and by the autistic community. You can find out more about this at the [Autistica/Turing Citizen Science](https://github.com/alan-turing-institute/AutisticaCitizenScience) repository.

**To be succesful, the platform must be accessible to diverse autistic users and meet the priorities and recommendations of the autistica/turing citizen science community.**

It has been built on work from the following repositories:

* Project Management: [Autistica/Turing Citizen Science](https://github.com/alan-turing-institute/AutisticaCitizenScience)
* Code for earlier version: [AutisticaPlatformPrototype](https://github.com/alan-turing-institute/AutisticaPlatformPrototype)
* Code for earlier version: [alan-turing-institute/autistica-filemanagement-demo](https://github.com/alan-turing-institute/autistica-filemanagement-demo)

## About the project

The Autistica/Turing citizen science project is a collaboration between the autism research charity Autistica and the UK's national institute for AI and data science, The Alan Turing Institute.

It is a research project which is pioneering new methods of participatory science to enable an empowered autistic community and break down the division between researcher and research "subject". To find out more about participatory science and why it matters, visit the [Autistica/Turing Citizen Science](https://github.com/alan-turing-institute/AutisticaCitizenScience) repository.

## Get in touch

There are lots of ways to get in touch and stay updated. You can:

* Anonymously, publicly share suggestions via the "always open" google form: https://bit.ly/AutisticaTuringCitSciForm
* Say hello in our public slack channel: https://slackin.openhumans.org
* Subscribe to our mailing list for monthly project updates: https://tinyletter.com/AutisticaTuringCitizenScience
* Join the discussion in our issues and pull requests

We welcome all contributions and feedback!

# Development Information

Autistica Turing Citizen Science Platform

This project was generated with [`wemake-django-template`](https://github.com/wemake-services/wemake-django-template). Current template version is: [04e22278c3d0ac862ac4a4ce841212b2f8e938d4](https://github.com/wemake-services/wemake-django-template/tree/04e22278c3d0ac862ac4a4ce841212b2f8e938d4). See what is [updated](https://github.com/wemake-services/wemake-django-template/compare/04e22278c3d0ac862ac4a4ce841212b2f8e938d4...master) since then.


[![wemake.services](https://img.shields.io/badge/%20-wemake.services-green.svg?label=%20&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAbUExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F%2F%2F5TvxDIAAAAIdFJOUwAjRA8xXANAL%2Bv0SAAAADNJREFUGNNjYCAIOJjRBdBFWMkVQeGzcHAwksJnAPPZGOGAASzPzAEHEGVsLExQwE7YswCb7AFZSF3bbAAAAABJRU5ErkJggg%3D%3D)](https://wemake.services)
[![wemake-python-styleguide](https://img.shields.io/badge/style-wemake-000000.svg)](https://github.com/wemake-services/wemake-python-styleguide)


## Prerequisites

You will need:

- `python3.8` (see `pyproject.toml` for full version)
- `postgresql` with version `9.6`
- `docker` with [version at least](https://docs.docker.com/compose/compose-file/#compose-and-docker-compatibility-matrix) `18.02`


## Development

When developing locally, we use:

- [`editorconfig`](http://editorconfig.org/) plugin (**required**)
- [`poetry`](https://github.com/python-poetry/poetry) (**required**)
- `pycharm 2017+` or `vscode`

To get the current website to run on your local device please follow [these steps](/dev_readme.md) in the [`dev_readme.md`](/dev_readme.md). Most of the code lives in the [`server`](/server) folder in this repository.

## Documentation

Full documentation is available here: [`docs/`](docs).

## Contributors

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
  <tbody>
    <tr>
      <td align="center"><a href="https://github.com/jhlink"><img src="https://avatars2.githubusercontent.com/u/1872836?v=4?s=100" width="100px;" alt="James "/><br /><sub><b>James </b></sub></a><br /><a href="#infra-jhlink" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=jhlink" title="Tests">⚠️</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=jhlink" title="Code">💻</a> <a href="#ideas-jhlink" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center"><a href="https://github.com/GeorgiaHCA"><img src="https://avatars1.githubusercontent.com/u/46889966?v=4?s=100" width="100px;" alt="Georgia"/><br /><sub><b>Georgia</b></sub></a><br /><a href="#content-GeorgiaHCA" title="Content">🖋</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=GeorgiaHCA" title="Documentation">📖</a> <a href="#projectManagement-GeorgiaHCA" title="Project Management">📆</a> <a href="#ideas-GeorgiaHCA" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AGeorgiaHCA" title="Reviewed Pull Requests">👀</a> <a href="#talk-GeorgiaHCA" title="Talks">📢</a></td>
      <td align="center"><a href="https://github.com/Angelsaur"><img src="https://avatars.githubusercontent.com/u/67108701?v=4?s=100" width="100px;" alt="Angelsaur"/><br /><sub><b>Angelsaur</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=Angelsaur" title="Documentation">📖</a> <a href="#design-Angelsaur" title="Design">🎨</a> <a href="#ideas-Angelsaur" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-Angelsaur" title="User Testing">📓</a></td>
      <td align="center"><a href="https://github.com/JamesSCTJ"><img src="https://avatars.githubusercontent.com/u/60160241?v=4?s=100" width="100px;" alt="JamesSCTJ"/><br /><sub><b>JamesSCTJ</b></sub></a><br /><a href="#ideas-JamesSCTJ" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=JamesSCTJ" title="Tests">⚠️</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AJamesSCTJ" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=JamesSCTJ" title="Documentation">📖</a> <a href="#design-JamesSCTJ" title="Design">🎨</a></td>
      <td align="center"><a href="http://www.brainonsilicon.com"><img src="https://avatars.githubusercontent.com/u/42813259?v=4?s=100" width="100px;" alt="Sophia Batchelor"/><br /><sub><b>Sophia Batchelor</b></sub></a><br /><a href="#ideas-BrainonSilicon" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=BrainonSilicon" title="Code">💻</a> <a href="#design-BrainonSilicon" title="Design">🎨</a> <a href="#question-BrainonSilicon" title="Answering Questions">💬</a> <a href="#mentoring-BrainonSilicon" title="Mentoring">🧑‍🏫</a></td>
      <td align="center"><a href="https://tzovar.as"><img src="https://avatars.githubusercontent.com/u/674899?v=4?s=100" width="100px;" alt="Bastian Greshake Tzovaras"/><br /><sub><b>Bastian Greshake Tzovaras</b></sub></a><br /><a href="#infra-gedankenstuecke" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=gedankenstuecke" title="Tests">⚠️</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=gedankenstuecke" title="Code">💻</a> <a href="#ideas-gedankenstuecke" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=gedankenstuecke" title="Documentation">📖</a></td>
      <td align="center"><a href="https://github.com/mridubhatnagar"><img src="https://avatars.githubusercontent.com/u/16894718?v=4?s=100" width="100px;" alt="Mridu Bhatnagar"/><br /><sub><b>Mridu Bhatnagar</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=mridubhatnagar" title="Code">💻</a> <a href="#infra-mridubhatnagar" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
    </tr>
    <tr>
      <td align="center"><a href="https://github.com/lottycoupat"><img src="https://avatars.githubusercontent.com/u/82104604?v=4?s=100" width="100px;" alt="lottycoupat"/><br /><sub><b>lottycoupat</b></sub></a><br /><a href="#ideas-lottycoupat" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=lottycoupat" title="Documentation">📖</a> <a href="#projectManagement-lottycoupat" title="Project Management">📆</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Alottycoupat" title="Reviewed Pull Requests">👀</a> <a href="#mentoring-lottycoupat" title="Mentoring">🧑‍🏫</a> <a href="#design-lottycoupat" title="Design">🎨</a></td>
      <td align="center"><a href="https://whitakerlab.github.io"><img src="https://avatars.githubusercontent.com/u/3626306?v=4?s=100" width="100px;" alt="Kirstie Whitaker"/><br /><sub><b>Kirstie Whitaker</b></sub></a><br /><a href="#ideas-KirstieJane" title="Ideas, Planning, & Feedback">🤔</a> <a href="#content-KirstieJane" title="Content">🖋</a> <a href="#question-KirstieJane" title="Answering Questions">💬</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AKirstieJane" title="Reviewed Pull Requests">👀</a> <a href="#mentoring-KirstieJane" title="Mentoring">🧑‍🏫</a> <a href="#projectManagement-KirstieJane" title="Project Management">📆</a></td>
      <td align="center"><a href="https://github.com/sowmya9507"><img src="https://avatars.githubusercontent.com/u/55495129?v=4?s=100" width="100px;" alt="Sowmya"/><br /><sub><b>Sowmya</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=sowmya9507" title="Code">💻</a> <a href="#ideas-sowmya9507" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=sowmya9507" title="Documentation">📖</a></td>
      <td align="center"><a href="http://anoura12.github.io"><img src="https://avatars.githubusercontent.com/u/73518403?v=4?s=100" width="100px;" alt="Anoushka Ramesh"/><br /><sub><b>Anoushka Ramesh</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=anoura12" title="Code">💻</a> <a href="#ideas-anoura12" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=anoura12" title="Documentation">📖</a></td>
      <td align="center"><a href="https://github.com/soledadli"><img src="https://avatars.githubusercontent.com/u/67457005?v=4?s=100" width="100px;" alt="soledadli"/><br /><sub><b>soledadli</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=soledadli" title="Code">💻</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=soledadli" title="Documentation">📖</a> <a href="#design-soledadli" title="Design">🎨</a> <a href="#projectManagement-soledadli" title="Project Management">📆</a> <a href="#ideas-soledadli" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center"><a href="http://www.badgermind.net"><img src="https://avatars.githubusercontent.com/u/1136671?v=4?s=100" width="100px;" alt="Robin Taylor"/><br /><sub><b>Robin Taylor</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=badgermind" title="Code">💻</a> <a href="#ideas-badgermind" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=badgermind" title="Documentation">📖</a> <a href="#design-badgermind" title="Design">🎨</a></td>
      <td align="center"><a href="https://github.com/israelvictory"><img src="https://avatars.githubusercontent.com/u/55067204?v=4?s=100" width="100px;" alt="Israel Abraham (~‾▿‾)~"/><br /><sub><b>Israel Abraham (~‾▿‾)~</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=israelvictory" title="Code">💻</a> <a href="#infra-israelvictory" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
    </tr>
    <tr>
      <td align="center"><a href="https://github.com/ThomasAJR"><img src="https://avatars.githubusercontent.com/u/55509495?v=4?s=100" width="100px;" alt="ThomasAJR"/><br /><sub><b>ThomasAJR</b></sub></a><br /><a href="#ideas-ThomasAJR" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AThomasAJR" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=ThomasAJR" title="Documentation">📖</a> <a href="#design-ThomasAJR" title="Design">🎨</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=ThomasAJR" title="Tests">⚠️</a></td>
      <td align="center"><a href="http://malvikasharan.github.io/"><img src="https://avatars.githubusercontent.com/u/5370471?v=4?s=100" width="100px;" alt="Malvika Sharan"/><br /><sub><b>Malvika Sharan</b></sub></a><br /><a href="#ideas-malvikasharan" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Amalvikasharan" title="Reviewed Pull Requests">👀</a></td>
      <td align="center"><a href="https://github.com/MaxwellRiess"><img src="https://avatars.githubusercontent.com/u/8421799?v=4?s=100" width="100px;" alt="Maxwell Riess"/><br /><sub><b>Maxwell Riess</b></sub></a><br /><a href="#ideas-MaxwellRiess" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AMaxwellRiess" title="Reviewed Pull Requests">👀</a></td>
      <td align="center"><a href="https://sgibson91.github.io/"><img src="https://avatars.githubusercontent.com/u/44771837?v=4?s=100" width="100px;" alt="Sarah Gibson"/><br /><sub><b>Sarah Gibson</b></sub></a><br /><a href="#ideas-sgibson91" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-sgibson91" title="Answering Questions">💬</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Asgibson91" title="Reviewed Pull Requests">👀</a></td>
      <td align="center"><a href="https://github.com/driscolle"><img src="https://avatars.githubusercontent.com/u/61194851?v=4?s=100" width="100px;" alt="driscolle"/><br /><sub><b>driscolle</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Adriscolle" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-driscolle" title="Project Management">📆</a></td>
      <td align="center"><a href="https://github.com/EllenDevereux"><img src="https://avatars.githubusercontent.com/u/60144081?v=4?s=100" width="100px;" alt="EllenDevereux"/><br /><sub><b>EllenDevereux</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3AEllenDevereux" title="Reviewed Pull Requests">👀</a> <a href="#projectManagement-EllenDevereux" title="Project Management">📆</a> <a href="#question-EllenDevereux" title="Answering Questions">💬</a> <a href="#ideas-EllenDevereux" title="Ideas, Planning, & Feedback">🤔</a> <a href="#content-EllenDevereux" title="Content">🖋</a></td>
      <td align="center"><a href="https://github.com/LouiseABowler"><img src="https://avatars.githubusercontent.com/u/25640708?v=4?s=100" width="100px;" alt="Louise Bowler"/><br /><sub><b>Louise Bowler</b></sub></a><br /><a href="#ideas-LouiseABowler" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3ALouiseABowler" title="Reviewed Pull Requests">👀</a></td>
    </tr>
    <tr>
      <td align="center"><a href="https://github.com/fjThomasStanley"><img src="https://avatars.githubusercontent.com/u/54365220?v=4?s=100" width="100px;" alt="fjThomasStanley"/><br /><sub><b>fjThomasStanley</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=fjThomasStanley" title="Code">💻</a> <a href="#ideas-fjThomasStanley" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center"><a href="https://github.com/aharding15"><img src="https://avatars.githubusercontent.com/u/53296647?v=4?s=100" width="100px;" alt="Andrew Harding"/><br /><sub><b>Andrew Harding</b></sub></a><br /><a href="#ideas-aharding15" title="Ideas, Planning, & Feedback">🤔</a> <a href="#question-aharding15" title="Answering Questions">💬</a> <a href="#projectManagement-aharding15" title="Project Management">📆</a></td>
      <td align="center"><a href="https://www.tiki-toki.com/timeline/entry/1753034/A-History-of-Research-Ethics/"><img src="https://avatars.githubusercontent.com/u/64027166?v=4?s=100" width="100px;" alt="Ismael-KG"/><br /><sub><b>Ismael-KG</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=Ismael-KG" title="Tests">⚠️</a></td>
      <td align="center"><a href="https://github.com/ayrustogaru"><img src="https://avatars.githubusercontent.com/u/35329371?v=4?s=100" width="100px;" alt="Surya Teja Togaru"/><br /><sub><b>Surya Teja Togaru</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=ayrustogaru" title="Documentation">📖</a></td>
      <td align="center"><a href="https://github.com/SuziQpid"><img src="https://avatars.githubusercontent.com/u/54582073?v=4?s=100" width="100px;" alt="SuziQpid"/><br /><sub><b>SuziQpid</b></sub></a><br /><a href="#ideas-SuziQpid" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=SuziQpid" title="Documentation">📖</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3ASuziQpid" title="Reviewed Pull Requests">👀</a> <a href="#talk-SuziQpid" title="Talks">📢</a></td>
      <td align="center"><a href="https://github.com/katoss"><img src="https://avatars.githubusercontent.com/u/23122159?v=4?s=100" width="100px;" alt="Katharina Kloppenborg"/><br /><sub><b>Katharina Kloppenborg</b></sub></a><br /><a href="#ideas-katoss" title="Ideas, Planning, & Feedback">🤔</a> <a href="#projectManagement-katoss" title="Project Management">📆</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=katoss" title="Documentation">📖</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Akatoss" title="Reviewed Pull Requests">👀</a></td>
      <td align="center"><a href="https://github.com/pgc007"><img src="https://avatars.githubusercontent.com/u/64270473?v=4?s=100" width="100px;" alt="pgc007"/><br /><sub><b>pgc007</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=pgc007" title="Code">💻</a> <a href="#ideas-pgc007" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=pgc007" title="Documentation">📖</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Apgc007" title="Reviewed Pull Requests">👀</a> <a href="#talk-pgc007" title="Talks">📢</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=pgc007" title="Tests">⚠️</a></td>
    </tr>
    <tr>
      <td align="center"><a href="https://github.com/sowmyaarajan"><img src="https://avatars.githubusercontent.com/u/55495129?v=4?s=100" width="100px;" alt="Sowmya"/><br /><sub><b>Sowmya</b></sub></a><br /><a href="#ideas-sowmyaarajan" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=sowmyaarajan" title="Code">💻</a></td>
      <td align="center"><a href="https://github.com/skfantoni"><img src="https://avatars.githubusercontent.com/u/83018163?v=4?s=100" width="100px;" alt="skfantoni"/><br /><sub><b>skfantoni</b></sub></a><br /><a href="#ideas-skfantoni" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Askfantoni" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=skfantoni" title="Documentation">📖</a> <a href="#design-skfantoni" title="Design">🎨</a></td>
      <td align="center"><a href="https://www.linkedin.com/in/akebu-simasiku-24186720a/?originalSubdomain=zm"><img src="https://avatars.githubusercontent.com/u/74776297?v=4?s=100" width="100px;" alt="Akebu"/><br /><sub><b>Akebu</b></sub></a><br /><a href="#content-akebu6" title="Content">🖋</a></td>
      <td align="center"><img src="https://avatars1.githubusercontent.com/u/46889966?v=4?s=100" width="100px;" alt="Otis Smith"/><br /><sub><b>Otis Smith</b></sub><br /><a href="#ideas" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3A" title="Reviewed Pull Requests">👀</a></td>
      <td align="center"><a href="http://gpst.me"><img src="https://avatars1.githubusercontent.com/u/3026030?v=4?s=100" width="100px;" alt="George Taylor"/><br /><sub><b>George Taylor</b></sub></a><br /><a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=georgepstaylor" title="Code">💻</a> <a href="#ideas-georgepstaylor" title="Ideas, Planning, & Feedback">🤔</a></td>
      <td align="center"><a href="http://www.talarify.co.za"><img src="https://avatars3.githubusercontent.com/u/7215014?v=4?s=100" width="100px;" alt="Anelda van der Walt"/><br /><sub><b>Anelda van der Walt</b></sub></a><br /><a href="#ideas-anelda" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=anelda" title="Tests">⚠️</a></td>
      <td align="center"><a href="https://github.com/callummole"><img src="https://avatars.githubusercontent.com/u/22677759?v=4?s=100" width="100px;" alt="Callum Mole"/><br /><sub><b>Callum Mole</b></sub></a><br /><a href="#ideas-callummole" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=callummole" title="Code">💻</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Acallummole" title="Reviewed Pull Requests">👀</a></td>
    </tr>
    <tr>
      <td align="center"><a href="https://github.com/helendduncan"><img src="https://avatars.githubusercontent.com/u/46891265?v=4?s=100" width="100px;" alt="Helen Duncan"/><br /><sub><b>Helen Duncan</b></sub></a><br /><a href="#ideas-helendduncan" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/commits?author=helendduncan" title="Code">💻</a> <a href="https://github.com/alan-turing-institute/AutSPACEs/pulls?q=is%3Apr+reviewed-by%3Ahelendduncan" title="Reviewed Pull Requests">👀</a></td>
    </tr>
  </tbody>
</table>

<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

Citscicartoon.png METASEP

server/settings/__init__.py METASEP
"""
This is a django-split-settings main file.

For more information read this:
https://github.com/sobolevn/django-split-settings
https://sobolevn.me/2017/04/managing-djangos-settings

To change settings file:
`DJANGO_ENV=production python manage.py runserver`
"""

from os import environ

import django_stubs_ext
from split_settings.tools import include, optional

# Monkeypatching Django, so stubs will work for all generics,
# see: https://github.com/typeddjango/django-stubs
django_stubs_ext.monkeypatch()

# Managing environment via `DJANGO_ENV` variable:
environ.setdefault('DJANGO_ENV', 'development')
_ENV = environ['DJANGO_ENV']

_base_settings = (
    'components/common.py',
    'components/logging.py',
    'components/csp.py',
    'components/caches.py',

    # Select the right env:
    'environments/{0}.py'.format(_ENV),

    # Optionally override some settings:
    optional('environments/local.py'),
)

# Include settings:
include(*_base_settings)

manage.py METASEP
#!/usr/bin/env python

import os
import sys


def main() -> None:
    """
    Main function.

    It does several things:
    1. Sets default settings module, if it is not set
    2. Warns if Django is not installed
    3. Executes any given command
    """
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')

    try:
        from django.core import management  # noqa: WPS433
    except ImportError:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and " +
            'available on your PYTHONPATH environment variable? Did you ' +
            'forget to activate a virtual environment?',
        )

    management.execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

server/apps/main/tests/fixtures/upload_file.yaml METASEP
interactions:
- request:
    body: project_member_id=1234567890abcdef&filename=myimage.jpg&metadata=%7B%22tags%22%3A+%5B%22foo%22%2C+%22+bar+%22%5D%2C+%22description%22%3A+%22some+text%22%7D
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      Content-Length: ['147']
      Content-Type: [application/x-www-form-urlencoded]
      User-Agent: [python-requests/2.18.4]
    method: POST
    uri: https://www.openhumans.org/api/direct-sharing/project/files/upload/direct/?access_token=foo
  response:
    body: {string: '{"id":1337,"url":"https://open-humans-production.s3.amazonaws.com/member-files/direct-sharing-73/somestring/myimage.jpg?Signature=signature&Expires=1520390000&AWSAccessKeyId=accesskey"}'}
    headers:
      Allow: ['POST, OPTIONS']
      Cache-Control: ['max-age=0, no-cache, must-revalidate, no-store']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Tue, 06 Mar 2018 21:19:57 GMT']
      Expires: ['Tue, 06 Mar 2018 21:19:57 GMT']
      Last-Modified: ['Tue, 06 Mar 2018 21:19:57 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 201, message: Created}
- request:
    body: !!python/object/new:_io.BytesIO
      state: !!python/tuple
      - !!binary |
        bXliaW5hcnlkYXRh
      - 0
      - null
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      Content-Length: ['12']
      User-Agent: [python-requests/2.18.4]
    method: PUT
    uri: https://open-humans-production.s3.amazonaws.com/member-files/direct-sharing-73/somestring/myimage.jpg?Signature=signature&Expires=1520390000&AWSAccessKeyId=accesskey
  response:
    body: {string: ''}
    headers:
      Content-Length: ['0']
      Date: ['Tue, 06 Mar 2018 21:19:59 GMT']
      ETag: ['"fjlaksjfklsajkljl"']
      Server: [AmazonS3]
      x-amz-id-2: [heregoessomeid=]
      x-amz-request-id: [randomone]
      x-amz-version-id: [randomtwo]
    status: {code: 200, message: OK}
- request:
    body: project_member_id=1234567890abcdef&file_id=1337
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      Content-Length: ['40']
      Content-Type: [application/x-www-form-urlencoded]
      User-Agent: [python-requests/2.18.4]
    method: POST
    uri: https://www.openhumans.org/api/direct-sharing/project/files/upload/complete/?access_token=foo
  response:
    body: {string: '{"status":"ok","size":12}'}
    headers:
      Allow: ['POST, OPTIONS']
      Cache-Control: ['max-age=0, no-cache, must-revalidate, no-store']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Tue, 06 Mar 2018 21:19:58 GMT']
      Expires: ['Tue, 06 Mar 2018 21:19:59 GMT']
      Last-Modified: ['Tue, 06 Mar 2018 21:19:59 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
version: 1

server/apps/main/tests/fixtures/token_exchange_valid.yaml METASEP
interactions:
- request:
    body: grant_type=authorization_code&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Fauthorize_openhumans%2F&code=6yNYmUlXN1wLwQFQR0lnUohR1KMeVt
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Authorization: [Basic Y2xpZW50aWQ6Y2xpZW50c2VjcmV0]
      Connection: [keep-alive]
      Content-Length: ['134']
      Content-Type: [application/x-www-form-urlencoded]
      User-Agent: [python-requests/2.18.4]
    method: POST
    uri: https://www.openhumans.org/oauth2/token/
  response:
    body: {string: '{"token_type": "Bearer", "access_token": "returnedaccesstoken",
        "refresh_token": "returnedrefreshtoken", "expires_in": 36000, "scope":
        "american-gut read wildlife open-humans write pgp go-viral"}'}
    headers:
      Cache-Control: [no-store]
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Sun, 04 Mar 2018 23:12:05 GMT']
      Pragma: [no-cache]
      Server: [Cowboy]
      Vary: ['Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
- request:
    body: null
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      User-Agent: [python-requests/2.18.4]
    method: GET
    uri: https://www.openhumans.org/api/direct-sharing/project/exchange-member/?access_token=returnedaccesstoken
  response:
    body: {string: '{"created":"2018-01-19T21:55:40.049169Z","project_member_id":"12345678","message_permission":true,"sources_shared":[],"data":[{"id":12345,"basename":"file_1","created":"2018-03-05T18:39:09.932067Z","download_url":"https://mytest.s3.amazonaws.com/member-files/direct-sharing-1337/7e3a0b60-20a4-11e8-8e3d-4a700bd48bfa/file_1?Signature=mysignature&Expires=1520291000&AWSAccessKeyId=ABCDEFGHIJ","metadata":{"tags":["foo","bar","baz"],"description":"foo"},"source":"direct-sharing-73"}]}'}
    headers:
      Allow: ['GET, HEAD, OPTIONS']
      Cache-Control: ['must-revalidate, no-store, no-cache, max-age=0']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Expires: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Last-Modified: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
version: 1

server/apps/main/tests/fixtures/delete_single.yaml METASEP
interactions:
- request:
    body: project_member_id=1234&file_id=1337
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      Content-Length: ['40']
      Content-Type: [application/x-www-form-urlencoded]
      User-Agent: [python-requests/2.18.4]
    method: POST
    uri: https://www.openhumans.org/api/direct-sharing/project/files/delete/?access_token=foo
  response:
    body: {string: '{"ids":[1337]}'}
    headers:
      Allow: ['POST, OPTIONS']
      Cache-Control: ['no-store, no-cache, max-age=0, must-revalidate']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Tue, 06 Mar 2018 04:33:37 GMT']
      Expires: ['Tue, 06 Mar 2018 04:33:38 GMT']
      Last-Modified: ['Tue, 06 Mar 2018 04:33:38 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
- request:
    body: null
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      User-Agent: [python-requests/2.18.4]
    method: GET
    uri: https://www.openhumans.org/api/direct-sharing/project/exchange-member/?access_token=foo
  response:
    body: {string: '{"created":"2018-01-19T21:55:40.049169Z","project_member_id":"12345678","message_permission":true,"sources_shared":[],"data":[{"id":12345,"basename":"file_1","created":"2018-03-05T18:39:09.932067Z","download_url":"https://mytest.s3.amazonaws.com/member-files/direct-sharing-1337/7e3a0b60-20a4-11e8-8e3d-4a700bd48bfa/file_1?Signature=mysignature&Expires=1520291000&AWSAccessKeyId=ABCDEFGHIJ","metadata":{"tags":["foo","bar","baz"],"description":"foo"},"source":"direct-sharing-73"}]}'}
    headers:
      Allow: ['GET, HEAD, OPTIONS']
      Cache-Control: ['must-revalidate, no-store, no-cache, max-age=0']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Expires: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Last-Modified: ['Mon, 05 Mar 2018 22:15:42 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
version: 1

server/apps/main/tests/fixtures/delete_all.yaml METASEP
interactions:
- request:
    body: project_member_id=1234&all_files=True
    headers:
      Accept: ['*/*']
      Accept-Encoding: ['gzip, deflate']
      Connection: [keep-alive]
      Content-Length: ['41']
      Content-Type: [application/x-www-form-urlencoded]
      User-Agent: [python-requests/2.18.4]
    method: POST
    uri: https://www.openhumans.org/api/direct-sharing/project/files/delete/?access_token=foo
  response:
    body: {string: '{"ids":[1337]}'}
    headers:
      Allow: ['POST, OPTIONS']
      Cache-Control: ['must-revalidate, no-store, no-cache, max-age=0']
      Connection: [close]
      Content-Language: [en]
      Content-Type: [application/json]
      Date: ['Tue, 06 Mar 2018 04:22:46 GMT']
      Expires: ['Tue, 06 Mar 2018 04:22:46 GMT']
      Last-Modified: ['Tue, 06 Mar 2018 04:22:46 GMT']
      Server: [Cowboy]
      Vary: ['Accept, Accept-Language, Cookie']
      Via: [1.1 vegur]
      X-Frame-Options: [SAMEORIGIN]
    status: {code: 200, message: OK}
version: 1

server/apps/main/templates/main/what_autism_is.html METASEP
{% extends 'main/application.html' %}
{% load static %}
{% block title %}AutSPACEs - What is Autism? {% endblock %}

{% block body_attributes%} data-spy="scroll" data-target="#content-bar" {% endblock %}

  {% block content %}

<!--Contents-->
<section id="content">
  <div class="container-fluid">
    <div class="row">
      <div class="col-3">
        <div class="list-group col-lg-3 cotent-list" id="content-bar">
          <h5 class="list-group-item content-title">Contents</h5>
          <a class="list-group-item list-group-item-action  d-flex justify-content-between align-items-center"
              href="#about-autspaces">About Autism<span class="badge badge-pill"></span></a>
          <a class="list-group-item list-group-item-action  d-flex justify-content-between align-items-center"
              href="#platform-usage">About Sensory Processing<span class="badge badge-pill"></span></a>
        </div>
      </div>


    <div class="about-content col-9" data-offset="0" data-target="#content-bar"
         style="padding: 2% 8%">
      <div class="about-autism">
        <h5 class="text-info" id="about-autspaces"><em></em>About Autism</h5>
        <p>Autism affects the way people communicate and experience the world around them.</p>

        <p>Autism is a spectrum of developmental conditions, including Asperger’s Syndrome. Every autistic person is different. Some are able to learn, live and work independently, while many have learning differences or co-occurring health conditions that require specialist support.</p>

        <p>"It’s just the way I process the world, it can give me challenges, but it gives me great joy too. I wouldn’t
          be me without it!"</p>
        <em>Rhi, autistic adult</em>
        <p>
       <a class="col-lg-12" href="https://www.autistica.org.uk/what-is-autism/what-is-autism" target="_blank" rel="noopener noreferrer" >
         <button class="btn btn-outline-dark float-right" type="button">Find Out More from Autistica</button>
       </a>
        </p>
      </div>
      <div class="about-autism">
        <h5 class="text-info" id="platform-usage"><em></em>About Sensory Processing</h5>
        <p>Sensory processing refers to the ways that our brains and bodies receive, sort, and respond to our environment using our senses. You might have heard of the five senses: touch, sight, hearing, smell and taste.</p>
        <p>There are more senses than just these five. We also have a sense of our own body, how we are moving it, and where it is in space. This sense is called proprioception. If you catch a ball or touch your nose, you are using proprioception.</p>

        <p>There are lots of different opinions about how many senses there are. Other senses include: a sense of balance (equilibriocpetion), a sense of hot and cold (thermoception), a sense of your heart beating (cardioception), and a sense of time passing (chromoception).</p>

        <p>A lot of autistic people (as many as 9/10 autistic people depending on the study) have sensory processing
          differences compared to non-autistic people. This means that they might respond to their environments differently. Sometimes this can cause extra challenges and create barriers for autistic peeople compared to non-autistic people when they navigate environments which were not build with autistic people in mind. For example, you might find lights brighter, noises louder, or busy spaces more overwhelming compared to non-autistic people. You may also experience positive differences.</p>
             <a class="col-lg-12"
                href="https://www.autism.org.uk/advice-and-guidance/topics/sensory-differences/sensory-differences/all-audiences" target="_blank" rel="noopener noreferrer">
         <button class="btn btn-outline-dark float-right" type="button">Find Out More from the National
           Autistic Society</button>
         </a>
       </div>
     </div>
  </div>
</div>

</section>

{%endblock%}

server/apps/main/templates/main/share_experiences.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - {{title}} {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}

<!--Share Experiences Form-->
<section id="share-form">
  <div class="row">
    <div class="container read-before-container" id="accordion">
      <div class="card">
        <div class="card-header" id="headingOne">
          <h5 class="mb-0">
            <button aria-controls="collapseOne" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseOne" data-toggle="collapse">
              Read before
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingOne" class="collapse" data-parent="#accordion" id="collapseOne">
          <div class="card-body">
            <p>The AutSPACEs platform is an online space which puts autistic people first. We are committed to
              providing a safe and welcoming place for autistic people and their supporters to share experiences,
              knowing their voices will be heard and their contributions recognised.</p>
            <p>AutSPACEs allows users to share stories publicly with other users as well as privately with researchers.
              In order
              for the platform to be a respectful and welcoming place for autistic people and other members of the
              community, everyone sharing a story publicly will be required to follow this code of conduct. Before they
              are
              published all stories will be reviewed by a moderator who will use this document as guidance when making
              decisions as to whether a post can be approved or not.</p>

            <strong>WHAT IS CONSIDERED TO BE SENSORY</strong>
            <p>People with autism often have sensory differences. This means their senses may be weaker or stronger than
              those who are neurotypical. This is why navigating and coping in the world can be very difficult for
              people with autism.
              </br>There are seven senses:
            <ul>
              <li>Sight</li>
              <li>Hearing</li>
              <li>Smell</li>
              <li>Taste</li>
              <li>Balance (Vestibular)</li>
              <li>Body Awareness (Proprioception)</li>
            </ul>
            </p>
<!--            Link to be updated-->
              <a href="#"
               target="_blank">
              <button class="btn btn-outline-primary coc-btn float-right">Read More</button>
            </a>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingTwo">
          <h5 class="mb-0">
            <button aria-controls="collapseTwo" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseTwo" data-toggle="collapse">
              Code of conduct
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingTwo" class="collapse" data-parent="#accordion" id="collapseTwo">
          <div class="card-body">
            <strong>The following stories will automatically be disapproved:</strong>
            <ul>
              <li>Neurodiversity</li>
              <li>Gender Identity and/or Expression</li>
              <li>Sexual Orientation</li>
              <li>Disability and/or Health</li>
              <li>Physical Appearance (eg. skin colour, body size, etc.)</li>
              <li>Nationality, Citizenship and Ethnic or Social Origin</li>
              <li>Religion/Belief (or lack thereof)</li>
              <li>Pregnancy and/or Familial Status</li>
              <li>Veteran Status</li>
              <li>Genetic Information</li>
              <li>Property and/or Socio-Economic Status</li>
              <li>Technical Preferences</li>
              <li>Experience Level</li>
            </ul>
            <p>Any post which discriminates or belittles anyone based on the below categories will be disapproved
              .</p>

            <strong>The following stories will be approved but may be
              labelled as ‘triggering’ when posted on the platform:</strong>
            <ul>
              <li>Abuse (physical, sexual, emotional and verbal</li>
              <li>Violence and Assault</li>
              <li>Drug and/or Alcohol use</li>
              <li>Mental Health Issues</li>
              <li>Negative body image</li>
            </ul>
            <!--            Link to be updated-->
            <a href="#"
               target="_blank">
              <button class="btn btn-outline-primary coc-btn float-right">Read More</button>
            </a>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingThree">
          <h5 class="mb-0">
            <button aria-controls="collapseThree" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseThree" data-toggle="collapse">
              Stories that break CoC
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingThree" class="collapse" data-parent="#accordion" id="collapseThree">
          <div class="card-body">
            <strong>Personal Details</strong>
            <p>Full Story</p>
            <p>I always found it hard to cope at school. It’s so loud and busy and I got bullied loads. Even my teachers
              were
              assholes, especially my science teacher Mrs Coleman. She was an absolute bitch!</p>

            <p></p>Recommendations</p>
            <p>The school system is shit. Honestly, we should just kill Michael Gove and the rest of the government
              too.</p>

            <strong>Discrimination</strong>
            <p>Story</p>
            <p>I hate gay people. They think they’re the only ones with problems. Who even gives a shit if you can’t get
              married. At least you have a community. I have no friends and no one cares about me. I spend my life in my
              room because everywhere is so loud and I don’t have anyone to hang out with anyway.</p>

            <p>Recommendations</p>
            <p>I just wish there was one person who actually cared about me.</p>
          </div>
        </div>
      </div>
    </div>
  </div>

  <div class="container story-section">
  {% if uuid %}
    {% if readonly %}
      <form action="" class="form-context" method="get">
    {% else %}
        {% if show_moderation_status %}
          <form action="{% url 'main:moderate_exp' uuid %}" class="form-context" method="post">
        {% else %}
          <form action="{% url 'main:edit_exp' uuid %}" class="form-context" method="post">
        {% endif %}
    {% endif %}
  {% else %}
    <form action="{% url 'main:share_exp' %}" class="form-context" method="post">
  {% endif %}
    {% csrf_token %}
    {% regroup form by field.group as field_groups %}

    {% for group in field_groups %}
      {% if group.grouper == "hidden" %}
        {% if show_moderation_status %}
          {% for field in group.list %}
          <div class="form-group">
            <h3><label for="{{ field.auto_id}}">{{ field.label }}</label></h3>
            {{ field }}
           </div>
           {% endfor %}
        {% endif %}
      {% elif group.grouper == 1 %}

        {% for field in group.list %}
        <div class="form-group">
          <h3><label for="{{ field.auto_id }}">{{ field.label }}</label></h3>
          {{ field }}
        </div>
        {% endfor %}

      {% else %}
        {% if group.grouper == 2 %}
          {% define "Sensitive topics" as header %}
          {% define "Please indicate if your experience covers a sensitive topic by selecting from the trigger labels below" as subheader %}
        {% endif %}
        {% if group.grouper == 3 %}
          {% define "Sharing Options" as header %}
          {% define "Please indicate if you want to share your experience" as subheader %}
        {% endif %}
        <div class="form-group">
          <h3><label>{{ header }}</label></h3>

          <h5>{{ subheader }}</h5>

          <div class="row">
          {% for field in group.list %}

            <div class="form-check col-lg-6">
              {% if field.label == "Other"%}
                <label for="{{ field.auto_id }}">{{ field.label }}:</label>
                {{field}}
              {% else %}
                {{ field }}
                <label for="{{ field.auto_id }}">{{ field.label }}</label>
              {% endif %}

            </div>

          {% endfor %}
         </div>
        </div>

      {% endif %}
    {% endfor %}

    {% if readonly %}
      </form>
    <div class="form-group">
      <a href="{% url 'main:edit_exp' uuid %}">
        <button class="btn btn-primary btn-lg float-right">Edit</button>
      </a>
    </div>
    {% else %}
      <div class='form-group'>
        <input type="submit" class="btn btn-outline-dark btn-lg float-right" value="Submit">
      </div>
    </form>
  </div>
    {% endif %}


</section>

{% endblock %}

server/apps/main/templates/main/registration.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Delete experience {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}


<!--  Intro: OS-->
 <section id="registration-intro">
   <h3 class="section-heading">Welcome to AutSPACEs Registration</h3>
  <div class="row">
    <div class="col-lg-12 registration-text-container">
      <p class="registration-text">To share your stories using AutSPACEs, you must first register with Open Humans. This is to
        give you
        control over your data and make sure that your data is kept safe.
        Open Humans have been working with The Alan Turing Institute to create AutSPACEs.
      </p>
      <p class="registration-text">OpenHumans is a non-profit organisation designed to help people access and understand their personal data,
        and to help them do and share things that use that data.
        You can find out more about Open Humans on <a href="https://www.openhumans.org/about/"
                                                      style="color: #ffff" class="stretched-link">their website</a>.
      <p class="registration-text">We will never sell your data, and we will never share it without your consent.
</p>
       <a href="https://www.openhumans.org/account/login/"
       target="_blank"><button class="btn btn-lg btn-light float-right">Register in Open Humans</button></a>
    </div>
  </div>
 </section>

{% endblock %}

server/apps/main/templates/main/my_stories.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - My Experiences {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}

<section id="mystory">


      <div class="story-container">
        <p class="big-heading">
          My Stories
        </p>
        <p class="intro-text">
          Welcome to your personal AutSPACEs page. Here you can:
        </p>

        <ul class="mystory-ul" class="can_do">
          <li class="list-item">See the experiences you have saved and submitted.
          </li>
          <li class="list-item">Change sharing permissions for your experiences.
          </li>
        </ul>
      </div>

      <div class="story-dashboard">
        <p class="dashboard-heading">
          Stories Dashboard
        </p>

        <div class="row story-card-row">
          <div class="story-card col-lg-4">
            <div class="card">
              <h3 class="story-head card-header process">In Process</h3>
              <div class="card-body">
                <ul class="mystory-ul">
                  <li class="list-item"><p class="card-text">Waiting:<strong> {% firstof n_not_reviewed 0|floatformat %} {% toggle_story n_not_reviewed %}
                  </strong></p></li>
                  <li class="list-item"><p class="card-text">Moderating:<strong> {% firstof n_in_review 0|floatformat %} {% toggle_story n_in_review %}
                  </strong></p></li>


                </ul>
              </div>
            </div>
          </div>
          <div class="story-card col-lg-4">
            <div class="card">
              <h3 class="story-head card-header submitted">Moderated</h3>
              <div class="card-body">
                <ul class="mystory-ul">
                  <li class="list-item"><p class="card-text">Moderated:<strong> {% firstof n_moderated 0|floatformat %} {% toggle_story n_moderated %}
                  </strong></p></li>
                  <li class="list-item"><p class="card-text">Approved:<strong> {% firstof n_approved 0|floatformat %} {% toggle_story n_approved %}
                  </strong></p></li>
                  <li class="list-item"><p class="card-text">Rejected:<strong> {% firstof n_rejected 0|floatformat %} {% toggle_story n_rejected %}
                  </strong></p></li>
                </ul>
              </div>
            </div>
          </div>
          <div class="story-card col-lg-4 message-card">
            <div class="card">
              <h3 class="story-head card-header messages">Messages</h3>
              <div class="card-body">
                <ul class="mystory-ul">
                  <li><p class="card-text">Your story<strong>"Traffic Lights"</strong> have been accepted.</p></li>
                </ul>
                <a
                  class="btn btn-outline-info float-right view-btn"
                  href="{% url 'main:public_experiences' %}" rel="noopener noreferrer"
                  target="_blank">View Here
                </a>
              </div>
            </div>
          </div>
        </div>
      </div>
</section>

<section id="story-table">
  {% define 'viewable, public, not public, research, non-research' as sharing_tags %}
  <div class="story-table-container">
    <table class="table table-responsive-lg table-hover table-striped mystory-table" style="width:auto">
      <thead>
      <tr>
        <th class="number-th" scope="col">Nr.</th>
        <th class="title-th" scope="col">Title</th>
        <th class="submission-date-th" scope="col">Creation Date</th>
        <th class="tags-th" scope="col">Tags</th>
        <th class="status-th" scope="col">Moderation Status</th>
        <th class="status-th" scope="col">Triggering Labels</th>
        <th class="status-th" scope="col" colspan="4">File Options</th>
      </tr>
      </thead>
      <tbody>
      {% for file in files %}
      <tr>
        <th scope="row">{{ forloop.counter }}</th>
        <td>{% firstof file.metadata.description "notitle" %}</td>
        <td>{% firstof file.created|naturaltime "Creation date unknown" %}</td>
        <td>
          {% for tag in file.metadata.tags %}
            {% if tag in sharing_tags %}
              <strong class="badge">{{ tag }}</strong>
            {%endif%}
          {% endfor %}
      </td>
      <td>
        {% firstof file.metadata.data.moderation_status "Moderation Status Unknown" %}
      </td>
      <td>
        {% for tag in file.metadata.tags %}
          {% if tag not in sharing_tags %}
            <strong class="badge">{{ tag }}</strong>
          {%endif%}
        {% endfor %}
      </td>
      <td>
        <a href="{% url 'main:view_exp' file.metadata.uuid %}" class="btn btn-light">
          View
        </a>
    </td>
      <td>
        <a href="{% url 'main:edit_exp' file.metadata.uuid %}" class="btn btn-primary">
          Edit
        </a>
    </td>
      <td>
          <a href="{{ file.download_url }}" class="btn btn-secondary" target="_blank">Download</a>
      </td>
      <td>
        <a href="{% url 'main:delete_exp' file.metadata.uuid file.metadata.description %}" class="btn btn-danger">Delete</a>
      </td>
      </tr>
      {% empty %}
        {% include 'main/partials/dummy_stories.html'%}
      {% endfor %}
      </tbody>
    </table>
    <div class="contact-btn">
    <a
      class="btn btn-lg btn-outline-primary float-right"
      href="https://docs.google.com/forms/d/e/1FAIpQLSe_9MW3r4nsGUDxGWN24X88hqtz6q_347DC1gbMc_Yzj2Hrcg/viewform?fbzx=6470416391260718913" rel="noopener noreferrer"
      target="_blank">Contact Moderators
    </a>
      </div>
          </div>

</section>
{% endblock %}

server/apps/main/templates/main/moderate_public_experiences.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Moderate experiences {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}

<section id="moderation-intro">
  <div class="row">
   <div class="col-lg-12">
     <div class="card-header"><h4>Moderator: </h4></div>
     <div class="card-body">
      <!-- new_experiences = filter(lambda x: x.attr0 == attr0 and x.attr1 == attr1, lst) -->
     <p>Moderated Experiences: {{ previously_reviewed_experiences.count }} </p>
     <p>New Experiences in the Platform: {{ unreviewed_experiences.count }} </p>
     <!-- Accordian Option -->
     <div id="accordion-moderation">
      <div class="card">
        <div class="card-header" id="moderate_new">
          <h5 class="mb-0">
            <button class="btn btn-link" data-toggle="collapse" data-target="#collapse_moderate_new" aria-expanded="true" aria-controls="collapse_moderate_new">
              Moderate New Experiences
            </button>
          </h5>
        </div>

        <div id="collapse_moderate_new" class="collapse" aria-labelledby="moderate_new" data-parent="#accordion-moderation">
          <div class="card-body">

            <table class="table table-responsive-lg table-hover table-striped" style="width:auto">
              <thead><tr>
                <th class="number-th" scope="col">Nr.</th>
                <th class="title-th" scope="col">Title</th>
                <th class="triggering-label" scope="col">Triggering Labels</th>
                <th class="title-th" scope="col">Moderate</th>
                </tr></thead>
                <tbody>
                  {% for experience in unreviewed_experiences %}
                  <tr>
                    <th scope="row">{{ forloop.counter }}</th>
                    <td>{% firstof experience.title_text "notitle" %}</td>
                    <td>
                      {% if experience.abuse or experience.violence or experience.drug or experience.mentalhealth or experience.negbody or experience.other %}
                      <span class="badge badge-warning float-right" style="font-size: 1rem; margin-top:2%">Includes triggering contents</span>
                      {% endif %}
                    </td>
                    <td>
                      <a class="btn btn-primary" href="{% url 'main:moderate_exp' experience.experience_id %}">
                        Moderate New Experience
                      </a>
                  </td>
                  </tr>
                  {% endfor %}
                </tbody>
              </table>
          </div>
        </div>
      </div>

      <div class="card">
        <div class="card-header" id="review_moderated">
          <h5 class="mb-0">
            <button class="btn btn-link" data-toggle="collapse" data-target="#collapse_review_moderated" aria-expanded="true" aria-controls="collapse_review_moderated">
              Review Moderated Experiences
            </button>
          </h5>
        </div>

        <div id="collapse_review_moderated" class="collapse" aria-labelledby="review_moderated" data-parent="#accordion-moderation">
          <div class="card-body">

            <table class="table table-responsive-lg table-hover table-striped" style="width:auto">
              <thead><tr>
                <th class="number-th" scope="col">Nr.</th>
                <th class="title-th" scope="col">Title</th>
                <th class="triggering-label" scope="col">Triggering Labels</th>
                <th class="moderation-status" scope="col">Moderation Status</th>
                <th class="title-th" scope="col">Moderate</th>
                </tr></thead>
                <tbody>
                  {% for experience in previously_reviewed_experiences %}
                  <tr>
                    <th scope="row">{{ forloop.counter }}</th>
                    <td>{% firstof experience.title_text "notitle" %}</td>
                    <td>
                      {% if experience.abuse or experience.violence or experience.drug or experience.mentalhealth or experience.negbody or experience.other %}
                        <span class="badge badge-warning float-right" style="font-size: 1rem; margin-top:2%">Includes triggering contents</span>
                      {% endif %}
                    </td>
                    <td>{{ experience.moderation_status }}</td>
                    <td>
                      <a class="btn btn-primary" href="{% url 'main:moderate_exp' experience.experience_id %}">
                        Review Moderated Experience
                      </a>
                  </td>
                  </tr>
                  {% endfor %}
                </tbody>
              </table>
          </div>
        </div>
      </div>


      <div class="card">
        <div class="card-header" id="questions">
          <h5 class="mb-0">
            <button class="btn btn-link" data-toggle="collapse" data-target="#collapse_questions" aria-expanded="true" aria-controls="collapse_questions">
              Questions
            </button>
          </h5>
        </div>

        <div id="collapse_questions" class="collapse" aria-labelledby="questions" data-parent="#accordion-moderation">
          <div class="card-body">
            Google Form for Questions Collection
          </div>
        </div>
      </div>


      </div>
     </div>

   </div>
  </div>
</section>

{% endblock %}

server/apps/main/templates/main/moderate_experience.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - {{title}} {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}

<!--Share Experiences Form-->
<section id="share-form">

  <div class="row">
    <div class="container read-before-container" id="accordion">
      <div class="card">
        <div class="card-header" id="headingOne">
          <h5 class="mb-0">
            <button aria-controls="collapseOne" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseOne" data-toggle="collapse">
              Read before
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingOne" class="collapse" data-parent="#accordion" id="collapseOne">
          <div class="card-body">
            <p>The AutSPACEs platform is an online space which puts autistic people first. We are committed to
              providing a safe and welcoming place for autistic people and their supporters to share experiences,
              knowing their voices will be heard and their contributions recognised.</p>
            <p>AutSPACEs allows users to share stories publicly with other users as well as privately with researchers.
              In order
              for the platform to be a respectful and welcoming place for autistic people and other members of the
              community, everyone sharing a story publicly will be required to follow this code of conduct. Before they
              are
              published all stories will be reviewed by a moderator who will use this document as guidance when making
              decisions as to whether a post can be approved or not.</p>

            <strong>WHAT IS CONSIDERED TO BE SENSORY</strong>
            <p>People with autism often have sensory differences. This means their senses may be weaker or stronger than
              those who are neurotypical. This is why navigating and coping in the world can be very difficult for
              people with autism.
              </br>There are seven senses:
            <ul>
              <li>Sight</li>
              <li>Hearing</li>
              <li>Smell</li>
              <li>Taste</li>
              <li>Balance (Vestibular)</li>
              <li>Body Awareness (Proprioception)</li>
            </ul>
            </p>
<!--            Link to be updated-->
              <a href="#"
               target="_blank">
              <button class="btn btn-outline-primary coc-btn float-right">Read More</button>
            </a>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingTwo">
          <h5 class="mb-0">
            <button aria-controls="collapseTwo" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseTwo" data-toggle="collapse">
              Code of conduct
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingTwo" class="collapse" data-parent="#accordion" id="collapseTwo">
          <div class="card-body">
            <strong>The following stories will automatically be disapproved:</strong>
            <ul>
              <li>Neurodiversity</li>
              <li>Gender Identity and/or Expression</li>
              <li>Sexual Orientation</li>
              <li>Disability and/or Health</li>
              <li>Physical Appearance (eg. skin colour, body size, etc.)</li>
              <li>Nationality, Citizenship and Ethnic or Social Origin</li>
              <li>Religion/Belief (or lack thereof)</li>
              <li>Pregnancy and/or Familial Status</li>
              <li>Veteran Status</li>
              <li>Genetic Information</li>
              <li>Property and/or Socio-Economic Status</li>
              <li>Technical Preferences</li>
              <li>Experience Level</li>
            </ul>
            <p>Any post which discriminates or belittles anyone based on the below categories will be disapproved
              .</p>

            <strong>The following stories will be approved but may be
              labelled as ‘triggering’ when posted on the platform:</strong>
            <ul>
              <li>Abuse (physical, sexual, emotional and verbal</li>
              <li>Violence and Assault</li>
              <li>Drug and/or Alcohol use</li>
              <li>Mental Health Issues</li>
              <li>Negative body image</li>
            </ul>
            <!--            Link to be updated-->
            <a href="#"
               target="_blank">
              <button class="btn btn-outline-primary coc-btn float-right">Read More</button>
            </a>
          </div>
        </div>
      </div>
      <div class="card">
        <div class="card-header" id="headingThree">
          <h5 class="mb-0">
            <button aria-controls="collapseThree" aria-expanded="false" class="btn btn-link collapsed"
                    data-target="#collapseThree" data-toggle="collapse">
              Stories that break CoC
            </button>
          </h5>
        </div>
        <div aria-labelledby="headingThree" class="collapse" data-parent="#accordion" id="collapseThree">
          <div class="card-body">
            <strong>Personal Details</strong>
            <p>Full Story</p>
            <p>I always found it hard to cope at school. It’s so loud and busy and I got bullied loads. Even my teachers
              were
              assholes, especially my science teacher Mrs Coleman. She was an absolute bitch!</p>

            <p></p>Recommendations</p>
            <p>The school system is shit. Honestly, we should just kill Michael Gove and the rest of the government
              too.</p>

            <strong>Discrimination</strong>
            <p>Story</p>
            <p>I hate gay people. They think they’re the only ones with problems. Who even gives a shit if you can’t get
              married. At least you have a community. I have no friends and no one cares about me. I spend my life in my
              room because everywhere is so loud and I don’t have anyone to hang out with anyway.</p>

            <p>Recommendations</p>
            <p>I just wish there was one person who actually cared about me.</p>
          </div>
        </div>
      </div>
    </div>
  </div>

  <div class="container story-section">

    <h1>Experience</h1>

    <h2>Title:<i> {{experience_title}}</i></h2>

    <h3>Experience</h3>
    <p><i>{{experience_text}}</i></p>

    <h3>What could have made the experience better?</h3>
    <p><i>{{experience_difference}}</i></p>

    <hr/>

    <h1>Experience history</h1>
    <table class="table">
        <thead>
          <tr>
            <th scope="col"></th>
            <th scope="col">Type</th>
            <th scope="col">Comment</th>
          </tr>
        </thead>
        <tbody>
            {% for history_item in experience_history %}
          <tr>
            <th scope="row">{{history_item.changed_at|naturaltime}}</th>
            <td>{{history_item.change_type}}</td>
            <td>{{history_item.change_comments}}</td>
          </tr>
          {% endfor %}
        </tbody>
    </table>

    <hr/>

    <h1>Moderation</h1>

    <form action="{% url 'main:moderate_exp' uuid %}" class="form-context" method="post">
    {% csrf_token %}
    {% regroup form by field.group as field_groups %}

    {% for group in field_groups %}
      {% if group.grouper == "hidden" %}
        
          {% for field in group.list %}
          <div class="form-group">
            <h3><label for="{{ field.auto_id}}">{{ field.label }}</label></h3>
            {{ field }}
           </div>
           {% endfor %}
        

      {% else %}
        {% if group.grouper == 2 %}
          {% define "Sensitive topics" as header %}
          {% define "Please indicate if your experience covers a sensitive topic by selecting from the trigger labels below" as subheader %}
        {% endif %}
        {% if group.grouper == 3 %}
          {% define "Sharing Options" as header %}
          {% define "Please indicate if you want to share your experience" as subheader %}
        {% endif %}
        <div class="form-group">
          <h3><label>{{ header }}</label></h3>

          <h5>{{ subheader }}</h5>

          <div class="row">
          {% for field in group.list %}

            <div class="form-check col-lg-6">
              {% if field.label == "Other"%}
                <label for="{{ field.auto_id }}">{{ field.label }}:</label>
                {{field}}
              {% else %}
                {{ field }}
                <label for="{{ field.auto_id }}">{{ field.label }}</label>
              {% endif %}

            </div>

          {% endfor %}
         </div>
        </div>

      {% endif %}
    {% endfor %}


      <div class='form-group'>
        <input type="submit" class="btn btn-outline-dark btn-lg float-right" value="Submit">
      </div>
    </form>
  </div>


</section>

{% endblock %}

server/apps/main/templates/main/home.html METASEP
{% extends 'main/application.html' %}
{% load static %}
{% block title %}AutSPACEs - What is Autism? {% endblock %}

{% block body_attributes%} data-spy="scroll" data-target="#content-bar" {% endblock %}

  {% block content %}

<!--Navigation-->
<section id="title">
<!--  Navigation-->
   <div class="container-fluid">
     <!--Introduction of AutSPACEs-->
    <div class="row intro">
      <div class="col-lg-6 text-left">
        <h1 class="big-heading">AutSPACEs</h1>
      </div>
    </div>

    <div class="row intro intro-text">
      <div class="col-lg-7">
        <h3 class="title-text">Makes environments better for autistic people by sharing stories about how senses
          affect
          people</h3>
         <a class="col-lg-12" href="{% url 'main:about_us' %}">
       <button class="btn btn-outline-light btn-lg float-left" type="button">Read More</button>
   </a>

      </div>
      <div class="col-lg-5">
        <img class="title-image" src="{% static '/images/animation_a.jpg' %}" alt="Illustration" />
      </div>
    </div>
  </div>

</section>
<section id="value">
  <div class="row">
  <div class="col-lg-4 value-box">
     <h3 class="value-heading">Increase</h3>
  <p class="value-text">understanding of sensory processing</p>
  </div>

  <div class="col-lg-4 value-box">
  <h3 class="value-heading">Share</h3>
  <p class="value-text"> strategies and experiences of autistic people</p>
</div>

  <div class="col-lg-4 value-box">
  <h3 class="value-heading">Advise</h3>
  <p class="value-text">organisations how to create better environments for autistic people</p>
    </div>
    </div>
</section>
<!--How to Use the Platform-->
<section id="platform_usage">
  <div class="row">
      <div class="col-lg-12 platform-title">
      <h2 class="section-heading">How to Use The Platform</h2>
    </div>
  </div>
  <div class="row">
  <div class="col-lg-2 platform-box platform-left-border">
     <h3 class="usage-heading">Register<img class="usage-icon m-5"
                                            src="{% static "/images/heart-fill.svg" %}" width="32"
          height="32"/ alt="Register" style="color: cornflowerblue;"></h3>
  </div>

  <div class="col-lg-2 platform-box">
  <h3 class="usage-heading">Share<img class="usage-icon m-5"
                                            src="{% static "/images/send.svg" %}" width="32"
          height="32"/ alt="Register" style="color: cornflowerblue;"></h3>
</div>

  <div class="col-lg-2 platform-box">
  <h3 class="usage-heading">Choose<img class="usage-icon m-5"
                                            src="{% static "/images/pie-chart-fill.svg" %}" width="32"
          height="32"/ alt="Register" style="color: cornflowerblue;"></h3>
    </div>

     <div class="col-lg-2 platform-box">
  <h3 class="usage-heading">Check<img class="usage-icon m-5"
                                            src="{% static "/images/ui-checks.svg" %}" width="32"
          height="32"/ alt="Register" style="color: cornflowerblue;"></h3>
    </div>

     <div class="col-lg-2 platform-box">
  <h3 class="usage-heading">Change<img class="usage-icon m-5"
                                            src="{% static "/images/pencil-square.svg" %}" width="32"
          height="32"/ alt="Register" style="color: cornflowerblue;"></h3>
    </div>
      <a class="col-lg-12" href="{{ auth_url }}">
       <button class="btn btn-outline-light btn-lg float-right platform-button" type="button">Read More</button>
   </a>
    </div>

</section>
<!--  View Experiences -->
<section id="experience">
  <div class="row">
      <div class="col-lg-6 shared-experience">
      <h2 class="section-heading">Shared Stories</h2>
  </div>
  <div id="experience-carousel" class="carousel slide" data-ride="false" data-interval="false">
    <ol class="carousel-indicators">
      <li data-target="#experience-carousel" data-slide-to="0" class="active"></li>
      <li data-target="#experience-carousel" data-slide-to="1"></li>
      <li data-target="#experience-carousel" data-slide-to="2"></li>
    </ol>
    <div class="carousel-inner">
      <div class="carousel-item active">
        <div class="row">
        <img class="experience-image float-left d-block w-50" src="{% static "/images/animation_d.jpg" %}" width="150"
          height="325"/ alt="First slide">
        <div class="col-md-5">
        <h3 class="experience-heading">Eating in a Restaurant</h3>
        <p class="experience-content">...Waiting for the food felt like some kind of marathon and I just got so overwhelmed. But now that I’ve
          realised hunger exacerbates my sensory differences I know how to cope. I try to make sure I’ve eaten something before I go out and a while back I bought some earplugs which are great for small and bustling places.. </p>
        <em small class="experience-content">Sdy</em>
         </div>
          </div>
      </div>
      <div class="carousel-item">
                <div class="row">
         <img class="experience-image float-left d-block w-50" src="{% static "/images/animation_b.jpg" %}" width="150"
                  height="325"/ alt="Second slide">
                          <div class="col-md-5">

         <h3 class="experience-heading">Ice cream</h3>
         <p class="experience-content">...Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore
           et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo co.... </p>
        <em class="experience-content">Ali</em>
                          </div>
                  </div>
      </div>
      <div class="carousel-item">
        <div class="row">
         <img class="experience-image float-left d-block w-50" src="{% static "/images/animation_c.jpg" %}"/
          width="150"
          height="325"  alt="Third slide">
          <div class="col-md-5">
         <h3 class="experience-heading">Traffic</h3>
        <p class="experience-content">...Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et
          dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo co .. </p>
        <em class="experience-content">Jess</em>
            </div>
          </div>
      </div>
    </div>
    <a class="carousel-control-prev" href="#experience-carousel" role="button" data-slide="prev">
      <span class="carousel-control-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="carousel-control-next" href="#experience-carousel" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>
      <a class="col-lg-12" href="{% url 'main:public_experiences' %}">
       <button class="btn btn-outline-dark btn-lg float-right" type="button">View More</button>
   </a>
        </div>

</section>
<!-- Call to Action-->
<section id="cta">
  <h2 class="section-heading">Get Involved</h2>
     <div class="row">
       <div class="cta-card col-lg-3">
         <div class="card">
           <h3 class="card-header cta-header">Management</h3>
           <div class="card-body">
             <p class="card-text">Contribute to the GitHub repository.</p>
                <a href="https://github.com/alan-turing-institute/AutisticaCitizenScience" class="btn btn-primary">Contribute</a>
           </div>
         </div>
       </div>
              <div class="cta-card col-lg-3">
         <div class="card">
           <h3 class="card-header cta-header">Development</h3>
           <div class="card-body">
             <p class="card-text">Contribute to the GitHub repository.</p>
                <a href="https://github.com/alan-turing-institute/AutSPACEs" class="btn btn-primary">Contribute</a>
           </div>
         </div>
       </div>
              <div class="cta-card col-lg-3">
         <div class="card">
           <h3 class="card-header cta-header">Discussion</h3>
           <div class="card-body">
             <p class="card-text">Join us on our public Slack Channel.</p>
                <a href="https://slackin.openhumans.org" class="btn btn-primary">Join Us</a>
           </div>
         </div>
       </div>
              <div class="cta-card col-lg-3">
         <div class="card">
           <h3 class="card-header cta-header">Updates</h3>
           <div class="card-body">
             <p class="card-text">Subscribe to our monthly newsletter.</p>
                <a href="https://tinyletter.com/AutisticaTuringCitizenScience" class="btn btn-primary">Subscribe</a>
           </div>
         </div>
       </div>
     </div>

</section>
<!--  What Autism is-->
<section id="autism">
  <div class="row align-items-center">
    <div class="col-lg-6">
      <h2 class="section-heading">What Autism Is</h2>
    </div>
    <div class="col-lg-6">
      <h4 class="autism-text">Autistic people often have different sensory processing to people who are not autistic
        .</h4>
      <h4 class="autism-text">By collecting together lots of autistic people’s experiences, we can change spaces so
        that
        they are
        better for autistic people.</h4>
      <a class="col-lg-12" href="{% url 'main:what_autism_is' %}">
       <button class="btn btn-outline-dark btn-lg float-right" type="button">View More</button>
   </a>
    </div>
  </div>
<!--  Direct to 'What Autism Is Page-->
</section>

{% endblock %}

server/apps/main/templates/main/experiences_page.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Public Experiences {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}


<div class="experience-intro">
  <div class="container">
    <div class="row">
      <div class="col-lg-12 text-left">
        <h1 class="big-heading">Shared Stories</h1>
      </div>
      <div class="col-lg-12 text-left">
        <p class="intro-text">Autistic people often have different sensory processing to people who are not autistic.
          By collecting together lots of autistic people’s experiences, we can change spaces so that they are
          better for autistic people.
        </p>
      </div>
    </div>
  </div>
</div>

<section id="search-section">
  <div class="container search">
    <form method="GET" action="{% url 'main:public_experiences' %}">
      <div class="form-row align-items-center" style="left: 0px">
        <div class="col-lg-8">
          <label class="sr-only" for="inlineFormInput">Name</label>
          <input class="form-control mb-2"
                  id="inlineFormInput"
                  placeholder="Search Stories"
                  type="text"
                  name="searched"
                  >
        </div>

        <div class="col-auto">
          <div class="form-check mb-2">
            <input class="form-check-input" id="autoSizingCheck" type="checkbox" name="triggering_stories" value="True">
            <label class="form-check-label" for="autoSizingCheck">
              Non-Triggering Stories
            </label>
          </div>
        </div>
        <div class="col-auto">
          <button class="btn btn-primary mb-2" type="submit">Search Stories</button>
        </div>
      </div>
    </form>
  </div>
</section>

<section id="stories-post">
  <div class="container-fluidr story-text">
    {% for experience in experiences %}
    <div class="row">
      <div class="col-lg-12 story">
        <div class="card w-100">
          <div class="card-body story">
            <h5 class="card-title story-header">{{ forloop.counter }}. {% firstof experience.title_text "no title given" %}
              {% if experience.abuse or experience.violence or experience.drug or experience.mentalhealth or experience.negbody or experience.other %}
                <span class="badge badge-warning float-right" style="font-size: 1rem; margin-top:2%">Includes triggering contents</span>
              {% endif %}
            </h5>
              <p class="card-text">{% firstof experience.experience_text|truncatechars:100 "no experience text given" %}</p>
              <em>AutSPACEs Contributor</em>
              <a
              class="btn btn-primary collapsed float-right"
              data-toggle="collapse"
              href="#exp{{ experience.experience_id }}"
              aria-expanded="false"
              aria-controls="exp{{ experience.experience_id }}"
              style="text-align: right">
              Read Full Story
              </a>
          </div>
          <div
          class="collapse"
          id="exp{{ experience.experience_id }}">
          <h4 class="story-card-title">Full Story</h4>
          <p class="story-card-text">{% firstof experience.experience_text "no experience text given" %} </p>
          <h4 class="story-card-title">Recommendation</h4>
          <p class="story-card-text">{% firstof experience.difference_text "no recommendation text given" %} </p>
          </div>
        </div>
      </div>
    </div>
    {% endfor %}
  </div>
</section>


{% endblock %}

server/apps/main/templates/main/deletion_success.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Delete experience {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}

<section class="confirmation">
  <div class="confirmation-container">
    <div class="confirm_success">
      <h1 class="big-heading title-text-yellow">Success!</h1>
      <p class="confirmation-title-text">Experience '{{title}}' deleted.</p>
    </div>
 </div>
    <div class="to-do-container">
      <p class="to-do-heading">
        What would you like to do next ?
      </p>

      <div class="btn-class">
        <a href="{% url 'main:share_exp' %}">
          <button class="btn btn-outline-primary btn-lg" type="button">Enter Another Experience</button>
        </a>

        <a href="{% url 'main:my_stories' %}">
          <button class="btn btn-outline-primary btn-lg" type="button">Go To My Stories</button>
        </a>

        <a href="{% url 'main:public_experiences' %}">
          <button class="btn btn-outline-primary btn-lg" type="button">View Other Stories</button>
        </a>

        <a href="{% url 'main:about_us' %}">
          <button class="btn btn-outline-primary btn-lg" type="button">Find Out More About AutSPACEs</button>
        </a>

      </div>
    </div>
  </div>

</section>

{% endblock %}

server/apps/main/templates/main/deletion_confirmation.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Delete experience {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}


<section class="confirmation">
  <div class="confirmation-container">
    <div class="confirm_success">
      <h1 class="title-text-yellow big-heading ">
        Are you sure?
      </h1>
      <p class="confirmation-title-text">
        You are about to delete the experience: {{title}}.
      </p>
    </div>


    <div class="row mx-0 py-4 justify-content-start">
      <div class="col-2">
            <form action="{% url 'main:delete_exp' uuid title %}" method="post">{% csrf_token %}
              <button type="submit" class="btn btn-danger btn-lg">Yes, Delete</button>
            </form>
      </div>
      <div class="col-2">
        <a href="{% url 'main:my_stories' %}" class="btn btn-outline-primary btn-lg">
          No, take me back
        </a>
      </div>
    </div>
  </div>
</section>

{% endblock %}

server/apps/main/templates/main/confirmation_page.html METASEP
{% extends 'main/application.html' %}

{% block title %}AutSPACEs - Experience saved! 🎉 {% endblock %}

{% load static %}
{% load custom_tags %}
{% load humanize %}

{% block content %}


<section class="confirmation">
  <div class="confirmation-container">
    <div class="confirm_success">
      <h1 class="big-heading title-text-yellow">
        Success!
      </h1>

      <p class="confirmation-title-text">
        Thank you for sharing your experience.
      </p>
    </div>
 </div>
    <div class="what-now-section">
      <p class="confirmation-section-heading">
        What happens now ?</p>
      <div class="what-now-text">
          <ul>
          <li><p class="text">
           If you chose to share your experience with the world, an autistic moderator
            will check that it follows our code of conduct, and if it does, you will receive a confirmation and your
              experience
            will then be published on this website.
          </p></li>

          <li><p class="text">
            If you chose to share it with researchers, it will be saved into a
            database, and researchers who follow
            our values will be able to use it for their research.
          </p></li>
            </ul>
      </div>
    </div>

    <div class="to-do-container">
      <p class="to-do-heading">
        What would you like to do next ?
      </p>

      <div class="btn-class btn-class-confirmationpage">
        <a href="{% url 'main:share_exp' %}">
          <button class="btn btn-outline-primary btn-lg btn-confirmationpage" type="button">Enter Another Experience</button>
        </a>

        <a href="{% url 'main:my_stories' %}">
          <button class="btn btn-outline-primary btn-lg btn-confirmationpage" type="button">Go To My Stories</button>
        </a>

        <a href="{% url 'main:public_experiences' %}">
          <button class="btn btn-outline-primary btn-lg btn-confirmationpage" type="button">View Other Stories</button>
        </a>

        <a href="{% url 'main:about_us' %}">
          <button class="btn btn-outline-primary btn-lg btn-confirmationpage" type="button">Find Out More About AutSPACEs</button>
        </a>

      </div>
    </div>
  </div>

</section>
</div>

{% endblock %}

server/apps/main/templates/main/application.html METASEP
<html lang='en'>
  <head>
    <meta charset="utf-8">
    <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">

    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>{% block title %}AutSPACEs{% endblock %}</title>

    <!-- Bootstrap CSS -->


    <!--Google Fonts-->
    <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,700;1,300&display=swap"
          rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=PT+Serif:400,700,400italic" rel="stylesheet" type="text/css">

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css">

    <link crossorigin="anonymous" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
          integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" rel="stylesheet">

    {% load static %}
    <link href="{% static '/css/main.css' %}" rel="stylesheet">
    {%block page_css%} {% endblock %}

  </head>

  <body {% block body_attributes%} {% endblock %}>

    <section id="intro">
    {% include 'main/partials/navigation.html' %}
    </section>

          {% if messages %}

            {% for message in messages %}
            <div class="alert alert-info" role="alert">
            {{ message }}
            </div>
            {% endfor %}

        {% endif %}

        {% block content %}
        {% endblock %}

    <section id="footer">
      {% include 'main/partials/footer.html'%}
    </section>

    {% include 'main/partials/jquery.html' %}
    <script src="{% static '/js/main.js' %}"></script>

  </body>
</html>

server/apps/main/templates/main/about_us.html METASEP
{% extends 'main/application.html' %}
{% load static %}
{% block title %}AutSPACEs - About Us {% endblock %}

{% block body_attributes%} data-spy="scroll" data-target="#content-bar" {% endblock %}



  {% block content %}

<!--Contents-->
<section id="content">
  <div class="container-fluid">
    <div class="row">
      <div class="col-3">
        <div class="list-group col-lg-3 cotent-list" id="content-bar">
          <h5 class="list-group-item content-title">Contents</h5>
          <a class="list-group-item list-group-item-action  d-flex justify-content-between align-items-center"
             href="#about-autspaces">About AutSPACEs<span class="badge badge-pill"></span></a>
          <a class="list-group-item list-group-item-action  d-flex justify-content-between align-items-center"
             href="#platform-usage">Platform Usage<span class="badge badge-pill"></span></a>
          <a class="list-group-item list-group-item-action d-flex justify-content-between align-items-center"
             href="#explore-autspaces">Explore AutSPACEs<span class="badge badge-pill"></span></a>
          <a class="list-group-item list-group-item-action d-flex justify-content-between align-items-center"
             href="#data-usage">Data Usage<span class="badge badge-pill"></span></a>
        <a
          href="https://docs.google.com/forms/d/e/1FAIpQLSe_9MW3r4nsGUDxGWN24X88hqtz6q_347DC1gbMc_Yzj2Hrcg/viewform?fbzx=6470416391260718913"
          target= "_blank" rel="noopener noreferrer" class="btn btn-primary float-right"style="margin: 10% 0">Contact us
          through Google Form
        </a>
        </div>
      </div>
      <div class="about-content col-9" data-offset="0" style="padding: 2% 8%">
        <div class="about-content-section">
          <h5 class="text-info" id="about-autspaces"><em></em>About AutSPACEs</h5>
          <p>The “Aut” in AutSPACEs refers to Autistic people, and the “SPACEs” is an acronym which refers to exploring
            Sensory Processing for Accessible Community Environments. This captures the aim of AutSPACEs which is to make
            spaces better for autistic people by learning about sensory processing and its impact.</p>

          <p>AutSPACEs is made by and for autistic people, researchers, and allies of autistic people, who think that the
            world would be a much better place if autistic people had more of a say in how public and private spaces are
            used and designed.</p>

          <p>All autistic people are different. We want to collect together lots of stories from autistic people, so that we
            can
            better understand how sensory processsing differences affect the way autistic people navigate the world around
            them. Together, we can use this information to build a better world for autistic people.</p>

          <p>There are three main goals:</p>
          <ul>
            <li>To advise organisations about how they can design and adapt spaces and policies to improve autistic people’s
              lives.
            </li>
            <li>To educate non-autistic people so that they can better support their autistic friends, families, and
              colleagues.
            </li>
            <li>To share autistic people’s stories and tips with other autistic people who have similar experiences, so that
              they
              can learn from each other</p>
          </ul>
        </div>
        <div class="about-content-section">
          <h5 class="text-info" id="platform-usage"><em></em>Platform Usage</h5>
          <h6 class="platform-list-title">1. Register with Open Humans</h6>
          <p>When you register you create a private and anonymous account with Open Humans. We work with Open Humans to
            make sure you have control over your data and that it is safe.</p>
          <p>Open Humans have been working with The Alan Turing Institute to create AutSPACEs. They are a not-for-profit
            organisation designed to help people access and understand their personal data, and to help them do and share
            things that use that data.

            You can find out more about <a href="https://www.openhumans.org/about/" target="_blank" rel="noopener noreferrer">Open Humans</a> on their website.</p>

          <p>We will never sell your data, and we will never share it without your consent.</p>
          <h6 class="platform-list-title">2. Share your story</h6>
          <p>Enter a description of how your senses affect you. For example: “I do not go on trains because they are too
            loud”.</p>
          <h6 class="platform-list-title">3. Choose who can read your story</h6>
          <p>You can choose to share your story publicly, so people using AutSPACEs can learn from it, or privately, for
            research. You can also share both publicly and with researchers if you prefer.</p>
          <h6 class="platform-list-title">4. Story is checked</h6>
          <p>If you want to make your story public, it will first be checked to make sure it follows our code of conduct.
            This is to keep AutSPACEs an autism-first, inclusive and welcoming space for all.</p>
          <h6 class="platform-list-title">5. Change your stories any time</h6>
          <p>You can view your own stories and edit them, or change who they are shared with any time, even once they are
            submitted.</p>
        </div>
        <div class="about-content-section">
          <h5 class="text-info" id="explore-autspaces"><em></em>Explore AutSPACEs</h5>
          <p>You do not need an account to explore AutSPACEs and read other people’s stories.</p>

          <p>If you are autistic, you may find other people who have similar sense experiences to you. You can discover tips
            and recommendations from them.</p>

          <p>If you are not autistic, you may find ways to better support n empathise with autistic people by learning from
            them how their senses affect them.</p>
        </div>
        <div class="about-content-section">
          <h5 class="text-info" id="data-usage"><em></em>Data Usage</h5>
          <p>We will <b>never</b> sell your data or share it with anyone without your consent.</p>

          <p>We believe that your data should belong to you, so it’s your choice what to do with it.</p>

          <p>If you choose to share your story with researchers, your story will be part of a dataset with other people’s
            experiences, and researchers can apply to look at the dataset for the purposes of making the world better for
            autistic people and their families. We will make sure that autistic people are involved in making decisions
            about
            who can look at the data. We have partnered with Open Humans to make sure your data is kept safe and secure. You
            can make this choice by checking the box ‘share with researchers’ when you share a story.</p>

          <p>If you choose to make your experience public, your experience will first be checked over by a moderator to make
            sure
            it follows our [code of conduct](link to code of conduct). We will let you know when a moderator has made a
            decision about your experience. If they decide it does follow our code of conduct, it will be published
            anonymously
            on this website. Anyone will be able to view your story, but your name will be kept private. You can make this
            choice by checking the box ‘share online with everyone’.</p>

          <p>If you choose not to share your experience you can still view it by going to My Stories.</p>

          <p>You can also choose to share with your story with researchers and make make your story public. You can do this
            by
            selecting ‘share with researchers’ and ‘share online with everyone’.</p>

          <p>You can also change your mind at any time by going to My-Experiences and selecting which options you would
            prefer.</p>
        </div>
      </div>
    </div>
  </div>

</section>
  {% endblock %}

server/README.md METASEP
### Server - AutSPACES Platform Code

In this folder you will find the up to date code that is used to run the platform. 

> Prerequisits for running the code on Windows:
- Python - Intermediate knowledge of writing in Python
- Docker - Container which hosts the platform, need to have this downloaded
- Visual Studio Code/Pycharm - tool for building your code
- Open Humans project creation

> Prerequisits for running the code on Mac:
- Python - Intermediate knowledge of writing in Python
- Open Humans project creation


Follow the links beloe to the up to date code for the different aspect of the platform: 
- [landing-page]()


Requirements and issues for each code and what needs to be done can be found in the [AutisticaCitizenScience Repository](https://github.com/alan-turing-institute/AutisticaCitizenScience)

server/wsgi.py METASEP
"""
WSGI config for server project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
application = get_wsgi_application()

server/urls.py METASEP
"""
Main URL mapping configuration file.

Include other URLConfs from external apps using method `include()`.

It is also a good practice to keep a single URL to the root index page.

This examples uses Django's default media
files serving technique in development.
"""

from django.conf import settings
from django.contrib import admin
from django.contrib.admindocs import urls as admindocs_urls
from django.urls import include, path
from django.views.generic import TemplateView
from health_check import urls as health_urls

from server.apps.main import urls as main_urls
from server.apps.main.views import index

admin.autodiscover()

urlpatterns = [
    # Apps:
    path('main/', include(main_urls, namespace='main')),

    # Health checks:
    path('health/', include(health_urls)),  # noqa: DJ05

    # django-admin:
    path('admin/doc/', include(admindocs_urls)),  # noqa: DJ05
    path('admin/', admin.site.urls),

    # Text and xml static files:
    path('robots.txt', TemplateView.as_view(
        template_name='txt/robots.txt',
        content_type='text/plain',
    )),
    path('humans.txt', TemplateView.as_view(
        template_name='txt/humans.txt',
        content_type='text/plain',
    )),

    # It is a good practice to have explicit index view:
    path('', index, name='index'),
]

# Appending url patterns for the prototype
urlpatterns += [
    path('openhumans/', include('openhumans.urls')),
]

if settings.DEBUG:  # pragma: no cover
    import debug_toolbar  # noqa: WPS433
    from django.conf.urls.static import static  # noqa: WPS433

    urlpatterns = [
        # URLs specific only to django-debug-toolbar:
        path('__debug__/', include(debug_toolbar.urls)),  # noqa: DJ05
    ] + urlpatterns + static(  # type: ignore
        # Serving media files in development only:
        settings.MEDIA_URL,
        document_root=settings.MEDIA_ROOT,
    )

server/__init__.py METASEP

server/apps/main/tests/tests_views.py METASEP
from io import BytesIO

from django.test import TestCase, Client
from django.core.management import call_command
from django.conf import settings
from openhumans.models import OpenHumansMember
import vcr


class IndexPageTestCase(TestCase):
    """
    Test cases for the index page.
    """

    def setUp(self):
        """
        Set up the app for following tests.
        """
        settings.DEBUG = True

    def test_index_page_content(self):
        """
        Test whether content is rendered properly.
        """
        c = Client()
        response = c.get('/')
        self.assertEqual(response.status_code, 200)


class LoginTestCase(TestCase):
    """
    Test the login logic of the OH API
    """

    def setUp(self):
        settings.DEBUG = True
        settings.OPENHUMANS_APP_BASE_URL = "http://127.0.0.1"

    def test_log_out_logged_out(self):
        """
        Tests logout function
        """
        c = Client()
        response = c.get('/logout')
        self.assertEqual(response.status_code, 302)
        self.assertRedirects(response, "/")

    def test_overview_logged_out(self):
        """
        Tests overview function when logged out
        """
        c = Client()
        response = c.get("/overview")
        self.assertEqual(response.status_code, 302)
        self.assertRedirects(response, "/")

    def test_log_out(self):
        """
        Tests logout function
        """
        data = {"access_token": 'foo',
                "refresh_token": 'bar',
                "expires_in": 36000}
        self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef',
                                                 data=data)
        self.oh_member.save()
        self.user = self.oh_member.user
        self.user.set_password('foobar')
        self.user.save()
        c = Client()
        c.login(username=self.user.username, password='foobar')
        response = c.post('/logout')
        self.assertEqual(response.wsgi_request.user.username, '')
        self.assertRedirects(response, "/")

    def test_upload_logged_out(self):
        c = Client()
        response = c.get("/upload/")
        self.assertEqual(response.status_code, 302)
        self.assertRedirects(response, '/')

server/apps/main/tests/tests.py METASEP
from unittest.mock import mock_open, patch
from urllib.error import HTTPError

from django.test import TestCase, Client, RequestFactory
from django.conf import settings
from openhumans.models import OpenHumansMember
from openhumans.settings import openhumans_settings
import requests_mock
import vcr


OH_BASE_URL = openhumans_settings['OPENHUMANS_OH_BASE_URL']
OH_API_BASE = OH_BASE_URL + '/api/direct-sharing'
OH_DIRECT_UPLOAD = OH_API_BASE + '/project/files/upload/direct/'
OH_DIRECT_UPLOAD_COMPLETE = OH_API_BASE + '/project/files/upload/complete/'
OH_OAUTH2_REDIRECT_URI = '{}/complete'.format(settings.OPENHUMANS_APP_BASE_URL)
OH_GET_URL = OH_API_BASE + '/project/exchange-member/'


class LoginTestCase(TestCase):
    """
    Tests for index page and upload feature
    """

    def setUp(self):
        """
        Set up the app for following tests
        """
        settings.DEBUG = True
        self.factory = RequestFactory()
        data = {"access_token": 'foo',
                "refresh_token": 'bar',
                "expires_in": 36000}
        self.oh_member = OpenHumansMember.create(oh_id='12345678',
                                                 data=data)
        self.oh_member.save()
        self.user = self.oh_member.user
        self.user.set_password('foobar')
        self.user.save()

    def test_index_logged_out(self):
        """
        Test index page when logged out
        """
        c = Client()
        response = c.get("/")
        self.assertEqual(response.status_code, 200)

    def test_index_logged_in(self):
        """
        Test if redirection happens when user logs in.
        """
        c = Client()
        c.login(username=self.user.username, password='foobar')
        response = c.get("/")
        self.assertRedirects(response, '/overview')

    def test_list_files_logged_out(self):
        """
        Test the list_files function when logged out.
        """
        c = Client()
        response = c.get("/list")
        self.assertRedirects(response, '/')

server/apps/main/tests/__init__.py METASEP

server/apps/main/templatetags/custom_tags.py METASEP
from django import template
# from django.contrib.auth.models import Group
from ..views import is_moderator

register = template.Library()

@register.simple_tag
def define(val=None):
  return val

@register.simple_tag
def toggle_story(val):
  if val == 1:
    return 'story'
  else:
    return 'stories'
  
register.simple_tag(is_moderator)  
  
server/apps/main/templatetags/__init__.py METASEP

server/apps/main/migrations/__init__.py METASEP

server/apps/main/migrations/0008_experiencehistory.py METASEP
# Generated by Django 2.2.17 on 2023-02-06 15:55

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0007_auto_20230123_1341'),
    ]

    operations = [
        migrations.CreateModel(
            name='ExperienceHistory',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('change_type', models.TextField()),
                ('changed_at', models.DateTimeField(auto_now=True)),
                ('changed_by', models.TextField()),
                ('change_comments', models.TextField(default='')),
                ('experience', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='main.PublicExperience')),
            ],
        ),
    ]

server/apps/main/migrations/0007_auto_20230123_1341.py METASEP
# Generated by Django 2.2.17 on 2023-01-23 13:41

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0006_auto_20230123_1209'),
    ]

    operations = [
        migrations.RenameField(
            model_name='publicexperience',
            old_name='approved',
            new_name='moderation_status',
        ),
    ]

server/apps/main/migrations/0006_auto_20230123_1209.py METASEP
# Generated by Django 2.2.17 on 2023-01-23 12:09

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0005_auto_20230105_1303'),
    ]

    operations = [
        migrations.AddField(
            model_name='publicexperience',
            name='research',
            field=models.BooleanField(default=False),
        ),
        migrations.AlterField(
            model_name='publicexperience',
            name='other',
            field=models.TextField(default=''),
        ),
    ]

server/apps/main/migrations/0005_auto_20230105_1303.py METASEP
# Generated by Django 2.2.17 on 2023-01-05 13:03

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0004_update_publicexperience_class'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='publicexperience',
            name='id',
        ),
        migrations.AlterField(
            model_name='publicexperience',
            name='experience_id',
            field=models.TextField(primary_key=True, serialize=False),
        ),
    ]

server/apps/main/migrations/0004_update_publicexperience_class.py METASEP
# Generated by Django 2.2.17 on 2022-12-20 13:47

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0003_publicexperience_title_text'),
    ]

    operations = [
        migrations.AddField(
            model_name='publicexperience',
            name='abuse',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='publicexperience',
            name='drug',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='publicexperience',
            name='mentalhealth',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='publicexperience',
            name='negbody',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='publicexperience',
            name='other',
            field=models.BooleanField(default=False),
        ),
        migrations.AddField(
            model_name='publicexperience',
            name='violence',
            field=models.BooleanField(default=False),
        ),
    ]

server/apps/main/migrations/0003_publicexperience_title_text.py METASEP
# Generated by Django 2.2.17 on 2022-11-29 11:16

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0002_add_fields_to_public_experiences'),
    ]

    operations = [
        migrations.AddField(
            model_name='publicexperience',
            name='title_text',
            field=models.TextField(default=''),
        ),
    ]

server/apps/main/migrations/0002_add_fields_to_public_experiences.py METASEP
# Generated by Django 2.2.17 on 2021-10-19 09:54

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ('main', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='PublicExperience',
            name='approved',
            field=models.CharField(default='not reviewed', max_length=50),
        ),
        migrations.AddField(
            model_name='PublicExperience',
            name='difference_text',
            field=models.TextField(default=''),
        ),
        migrations.AddField(
            model_name='PublicExperience',
            name='experience_id',
            field=models.TextField(default=''),
            preserve_default=False,
        ),
    ]

server/apps/main/migrations/0001_initial.py METASEP
# Generated by Django 2.2.3 on 2019-07-15 12:14

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('openhumans', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='PublicExperience',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('experience_text', models.TextField()),
                ('created_at', models.DateTimeField(auto_now=True)),
                ('open_humans_member', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='openhumans.OpenHumansMember')),
            ],
        ),
    ]

server/apps/__init__.py METASEP

server/apps/main/views.py METASEP
import datetime
import io
import json
import logging
import uuid

import requests
from django.conf import settings
from django.contrib.auth import login, logout
from django.forms.models import model_to_dict
from django.shortcuts import redirect, render
from openhumans.models import OpenHumansMember
from django.db.models import Q
from django.contrib.auth.models import Group


from .models import PublicExperience, ExperienceHistory

from .forms import ShareExperienceForm, ModerateExperienceForm

logger = logging.getLogger(__name__)


def index(request):
    """
    Starting page for app.
    """
    auth_url = OpenHumansMember.get_auth_url()
    context = {'auth_url': auth_url,
               'oh_proj_page': settings.OH_PROJ_PAGE}
    if request.user.is_authenticated:
        return redirect('main:overview')
    return render(request, 'main/home.html', context=context)


def overview(request):
    if request.user.is_authenticated:
        oh_member = request.user.openhumansmember
        context = {'oh_id': oh_member.oh_id,
                   'oh_member': oh_member,
                   'oh_proj_page': settings.OH_PROJ_PAGE}
        return render(request, 'main/home.html', context=context)
    return redirect('index')


def logout_user(request):
    """
    Logout user
    """
    if request.user.is_authenticated:
        logout(request)
    return redirect('index')

def share_experience(request, uuid=False):
    # if this is a POST request we need to process the form data
    if request.user.is_authenticated:

        if request.method == 'POST':
            # create a form instance and populate it with data from the request:
            form = ShareExperienceForm(request.POST)
            # check whether it's valid:

            if form.is_valid():

                if uuid:
                    # we will be here if we are editing a record that already exists
                    # for OH we need to Delete before reupload.
                    request.user.openhumansmember.delete_single_file(file_basename = f"{uuid}.json")

                else:
                    uuid = make_uuid()

                upload(data = form.cleaned_data, uuid = uuid, ohmember = request.user.openhumansmember)

                # for Public Experience we need to check if it's viewable and update accordingly.
                update_public_experience_db(data=form.cleaned_data, uuid=uuid, ohmember=request.user.openhumansmember)

                # redirect to a new URL:
                return redirect('main:confirm_page')

        # if a GET (or any other method) we'll create a blank form
        else:

            if uuid:
                # return data from oh.
                data = get_oh_file(ohmember=request.user.openhumansmember, uuid=uuid)
                form = ShareExperienceForm(data["metadata"]["data"])
                title = "Edit experience"

            else:
                form = ShareExperienceForm()
                title = "Share experience"

            return render(request, 'main/share_experiences.html',
                        {'form': form, 'uuid':uuid, 'title': title})

    else:
        return redirect('index')

def view_experience(request, uuid):

    if request.user.is_authenticated:
        # return data from oh.
        data = get_oh_file(ohmember=request.user.openhumansmember, uuid=uuid)
        form = ShareExperienceForm(data["metadata"]["data"], disable_all=True)
        return render(request, 'main/share_experiences.html',
            {'form': form, 'uuid':uuid,
            'readonly':True, 'show_moderation_status':False, 'title': 'View experience'})
    else:
        redirect('index')


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
        pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)
        
        # .save() updates if primary key exists, inserts otherwise. 
        pe.save()

        if pe.experiencehistory_set.count() == 0:
            change_type = "Make Public"
            change_comments = "Story flagged to be shared on AutSPACE website"
        elif change_comments == None:
            change_comments = "Story edited"
        # Produce and add the ExperienceHistory object to the public experience
        eh = ExperienceHistory(experience=pe,
                                change_type = change_type, 
                                changed_at = datetime.datetime.now(),
                                changed_by = str(ohmember),
                                change_comments = change_comments)

        eh.save()
        # change_type = models.TextField()
        # changed_at = models.DateTimeField(auto_now=True)
        # changed_by = models.TextField()
        # change_comments = models.TextField(default="")  
        
    else:
        delete_PE(uuid,ohmember)


def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def make_uuid():
    return str(uuid.uuid1())

def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)

def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags

def delete_experience(request, uuid, title):
    # TODO: we currently are passing title via url because it is nice to display it in the confirmation. We could improve the deletion process by having a javascript layover.

    if request.user.is_authenticated:

        if request.method == 'POST':

            delete_single_file(uuid = uuid,
                               ohmember = request.user.openhumansmember)


            return render(request, 'main/deletion_success.html', {"title":title})

        else:
            return render(request, 'main/deletion_confirmation.html', {"title": title,
                                                                       "uuid": uuid})
    else:
        return redirect('index')


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)

def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]



def list_files(request):
    if request.user.is_authenticated:
        context = {'files': request.user.openhumansmember.list_files()}
        return render(request, 'main/list.html',
                      context=context)
    return redirect('index')


def list_public_experiences(request):
    """

    Returns, in the context, experiences that are 1) listed public, 2) approved, 3) searched, 4) abide by triggering label toggle.

    """

    experiences = PublicExperience.objects.filter(moderation_status='approved')

    # Check to see if a search has been performed
    searched = request.GET.get('searched', False)

    # Only search through approved stories
    if searched:

        # search within all approved stories regardless of triggering status

        experiences = experiences.filter(Q(title_text__icontains = searched) |
                                         Q(experience_text__icontains = searched) |
                                         Q(difference_text__icontains = searched))

    # If the triggering stories flag is checked - perform an additional filter to remove triggering stories
    trigger_label = request.GET.get('triggering_stories', False)

    if trigger_label:
        experiences = experiences.filter(Q(abuse = False) &
                                         Q(violence = False) &
                                         Q(drug = False) &
                                         Q(mentalhealth = False) &
                                         Q(negbody = False) &
                                         Q(other = ""))

    # Standard page showing all moderated stories
    return render(
        request,
        'main/experiences_page.html',
        context={'experiences': experiences})


def moderate_public_experiences(request):
    if request.user.is_authenticated and is_moderator(request.user):
        unreviewed_experiences = PublicExperience.objects.filter(moderation_status='not reviewed')
        previously_reviewed_experiences = PublicExperience.objects.filter(~Q(moderation_status='not reviewed'))
        return render(
            request,
            'main/moderate_public_experiences.html',
            context={"unreviewed_experiences": unreviewed_experiences,
            "previously_reviewed_experiences": previously_reviewed_experiences})
    else:
        return redirect("main:overview")



def review_experience(request, experience_id):
    experience = PublicExperience.objects.get(experience_id=experience_id)
    experience.approved = 'approved'
    experience.save()
    return redirect('moderate_public_experiences')


def make_non_viewable(request, oh_file_id, file_uuid):
    pe = PublicExperience.objects.get(experience_id=file_uuid)
    pe.delete()
    oh_files = request.user.openhumansmember.list_files()
    for f in oh_files:
        if str(f['id']) == str(oh_file_id):
            experience = requests.get(f['download_url']).json()
            new_metadata = f['metadata']
            new_metadata['tags'] = ['not public'] + f['metadata']['tags'][1:]
            output = io.StringIO()
            output.write(json.dumps(experience))
            output.seek(0)
            request.user.openhumansmember.upload(
                stream=output,
                filename='testfile.json',
                metadata=new_metadata)
            request.user.openhumansmember.delete_single_file(file_id=oh_file_id)
    return redirect('main:list')


def make_viewable(request, oh_file_id, file_uuid):
    oh_files = request.user.openhumansmember.list_files()
    for f in oh_files:
        if str(f['id']) == str(oh_file_id):
            experience = requests.get(f['download_url']).json()
            new_metadata = f['metadata']
            new_metadata['tags'] = ['viewable'] + f['metadata']['tags'][1:]
            output = io.StringIO()
            output.write(json.dumps(experience))
            output.seek(0)
            request.user.openhumansmember.upload(
                stream=output,
                filename='testfile.json',
                metadata=new_metadata)
            request.user.openhumansmember.delete_single_file(
                file_id=oh_file_id)
            PublicExperience.objects.create(
                experience_text=experience['text'],
                difference_text=experience['wish_different'],
                open_humans_member=request.user.openhumansmember,
                experience_id=file_uuid)
    return redirect('list')


def make_non_research(request, oh_file_id, file_uuid):
    oh_files = request.user.openhumansmember.list_files()
    for f in oh_files:
        if str(f['id']) == str(oh_file_id):
            experience = requests.get(f['download_url']).json()
            new_metadata = f['metadata']
            new_metadata['tags'] = f['metadata']['tags'][:-1] + ['non-research']
            output = io.StringIO()
            output.write(json.dumps(experience))
            output.seek(0)
            request.user.openhumansmember.upload(
                stream=output,
                filename='testfile.json',
                metadata=new_metadata)
            request.user.openhumansmember.delete_single_file(
                file_id=oh_file_id)
    return redirect('list')


def make_research(request, oh_file_id, file_uuid):
    oh_files = request.user.openhumansmember.list_files()
    for f in oh_files:
        if str(f['id']) == str(oh_file_id):
            experience = requests.get(f['download_url']).json()
            new_metadata = f['metadata']
            new_metadata['tags'] = f['metadata']['tags'][:-1] + ['research']
            output = io.StringIO()
            output.write(json.dumps(experience))
            output.seek(0)
            request.user.openhumansmember.upload(
                stream=output,
                filename='testfile.json',
                metadata=new_metadata)
            request.user.openhumansmember.delete_single_file(
                file_id=oh_file_id)
    return redirect('list')

def edit_experience(request):

    print(request.POST)
    return render(request, 'main/share_experiences.html')

    # context = {}
    # if request.method == 'POST':
    #     print(request.POST)
    #     return render(request, 'main/share_experiences.html', context)
    # else:
    #     if request.user.is_authenticated:
    #         return render(request, 'main/share_experiences.html', context)
    # redirect('main:my_stories')

def signup(request):
    return render(request, "main/signup.html")

def registration(request):
    registration_status = True
    print(registration_status)
    return render(request, "main/registration.html", {'page_status': 'registration'})

def signup_frame4_test(request):
    return render(request, "main/signup1.html")

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def my_stories(request):
    if request.user.is_authenticated:
        context = {'files': request.user.openhumansmember.list_files()}
        context = reformat_date_string(context)
        statuses = get_review_status(context['files'])
        context = {**context, **statuses}
        return render(request, "main/my_stories.html", context)
    else:
        return redirect("main:overview")


def confirmation_page(request):
    """
    Confirmation Page For App
    """
    return render(request, "main/confirmation_page.html")


def about_us(request):
    return render(request, "main/about_us.html")

# def what_autism_is(request):
#     auth_url = OpenHumansMember.get_auth_url()
#     context = {'auth_url': auth_url,
#                'oh_proj_page': settings.OH_PROJ_PAGE}
#     if request.user.is_authenticated:
#         return redirect('main:what_autism_is')
#     return render(request, 'main/what_autism_is.html', context=context)
def navigation(request):
    return render(request, "main/navigation.html")

# def about_us(request):
#     return render(request, "main/about_us.html")

def what_autism_is(request):
    return render(request, "main/what_autism_is.html")

def footer(request):
    return render(request, "main/footer.html")

def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict
    

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict

def moderate_experience(request, uuid):
    if request.user.is_authenticated and is_moderator(request.user):
        model = PublicExperience.objects.get(experience_id = uuid)
        if request.method == "POST":
            # get the data from the model
            moderated_form = ModerateExperienceForm(request.POST)
            moderated_form.is_valid()

            # Get the (immutable) experience data
            unchanged_experience_details = extract_experience_details(model)
            # Get the (mutable) trigger warnings
            trigger_details = process_trigger_warnings(moderated_form)

            # validate
            data = {**unchanged_experience_details, **trigger_details}

            moderation_comments = data.pop('moderation_comments', None)

            # get the users OH member id from the model
            user_OH_member = model.open_humans_member

            # wrap in try/except in case user writing experience originally has left AutSPACEs
            try:
                user_OH_member.delete_single_file(file_basename = f"{uuid}.json")
                upload(data, uuid, ohmember=user_OH_member)

                print(ExperienceHistory.objects.filter(experience__experience_id=uuid))
                # update the PE object 
                update_public_experience_db(data, uuid, ohmember=user_OH_member, change_type="Moderate", change_comments = moderation_comments)
            except Exception:
                # if user writing E has deauthorized autspaces, delete public experience
                delete_PE(uuid=uuid, ohmember=user_OH_member)
            # redirect to a new URL:
            return redirect('main:moderate_public_experiences')

        else:
            experience_title = model.title_text
            experience_text = model.experience_text
            experience_difference = model.difference_text
            experience_history = model.experiencehistory_set.all().order_by('changed_at')

            form = model_to_form(model, disable_moderator=True)
            return render(request, 'main/moderate_experience.html',
                {'form': form, 'uuid':uuid, "experience_title": experience_title,
                 'experience_text': experience_text, 'experience_difference': experience_difference,
                 'experience_history': experience_history,
                'show_moderation_status':True, 'title': "Moderate experience"})
    else:
        redirect('index')

def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form


def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False

server/apps/main/urls.py METASEP
from django.urls import path, re_path
from server.apps.main import views

app_name = 'main'

urlpatterns = [
    re_path(r'^$', views.index, name='index'),
    re_path(r'^signup/?$', views.signup, name='signup'),
    re_path(r'^signup1/?$', views.signup_frame4_test, name='signup_frame4_test'),
    re_path(r'^logout/?$', views.logout_user, name='logout'),
    re_path(r'^overview/?$', views.overview, name='overview'),
    re_path(r'^public_experiences/?$', views.list_public_experiences,
        name='public_experiences'),
    re_path(r'^moderate_public_experiences/?$', views.moderate_public_experiences,
        name='moderate_public_experiences'),
    re_path(r'^list/?$', views.list_files, name='list'),
    
    path('delete/<uuid>/<title>/', views.delete_experience, name='delete_exp'),
    path('share_exp/', views.share_experience, name='share_exp'),
    path('edit/<uuid>/', views.share_experience, name='edit_exp'),
    path('moderate/<uuid>/', views.moderate_experience, name='moderate_exp'),
    path('view/<uuid>/', views.view_experience, name='view_exp'),

    path('review_experience/<experience_id>/',
         views.review_experience,
         name='review_experience'),
    path('make_non_viewable/<oh_file_id>/<file_uuid>/',
         views.make_non_viewable,
         name='make_non_viewable'),
    path('make_viewable/<oh_file_id>/<file_uuid>/',
         views.make_viewable,
         name='make_viewable'),
    path('make_non_research/<oh_file_id>/<file_uuid>/',
         views.make_non_research,
         name='make_non_research'),
    path('make_research/<oh_file_id>/<file_uuid>/',
         views.make_research,
         name='make_research'),
    path('my_stories/', views.my_stories, name="my_stories"),
    path('confirm_page/', views.confirmation_page, name="confirm_page"),
    path('about_us/', views.about_us, name="about_us"),
    path('what_autism_is/', views.what_autism_is, name="what_autism_is"),
    path('navigation/', views.navigation, name="navigation"),
    path('footer/', views.footer, name="footer"),
    path('registration/', views.registration, name="registration"),

]

server/apps/main/models.py METASEP
from django.db import models
from openhumans.models import OpenHumansMember


class PublicExperience(models.Model):
    experience_text = models.TextField()
    difference_text = models.TextField(default="")
    title_text = models.TextField(default="")
    created_at = models.DateTimeField(auto_now=True)
    experience_id = models.TextField(primary_key=True) #if specified as primary key you cannot have duplicates.
    open_humans_member = models.ForeignKey(OpenHumansMember,
                                           blank=True, null=True,
                                           on_delete=models.CASCADE)
    moderation_status = models.CharField(
        blank=False,
        default='not reviewed',
        max_length=50)
    
    abuse = models.BooleanField(default=False)
    violence = models.BooleanField(default=False)
    drug = models.BooleanField(default=False)
    mentalhealth = models.BooleanField(default=False)
    negbody = models.BooleanField(default=False)
    other = models.TextField(default="")
    
    research = models.BooleanField(default=False)

    def __str__(self):
        return self.experience_text

class ExperienceHistory(models.Model):
    experience = models.ForeignKey(PublicExperience, on_delete=models.CASCADE)
    change_type = models.TextField()
    changed_at = models.DateTimeField(auto_now=True)
    changed_by = models.TextField()
    change_comments = models.TextField(default="")

    def __str__(self):
        return self.change_type
server/apps/main/forms.py METASEP
from django import forms

class ShareExperienceForm(forms.Form):
        
    experience_text = forms.CharField(label='Please share your experience', max_length=500, strip=True,
                                 widget=forms.Textarea(attrs={'placeholder':'Write your experience here, you can take as much or little space as you need.',
                                                              'rows':'4',
                                                              'class':'form-control'}))
    experience_text.group = 1
    difference_text = forms.CharField(label='What could have made your experience better?',
                                     strip=True, max_length=500,
                                     widget=forms.Textarea(attrs={'placeholder':'Do you have anything that you would want to have changed to make it better? Or do you have any tips for others who may experience the same thing?',
                                                              'rows':'4',
                                                              'class':'form-control'}))
    difference_text.group = 1
    title_text = forms.CharField(label='Choose a title for your story', 
                            strip=True,
                            max_length=150,
                            widget=forms.TextInput(attrs={'placeholder':'Title',
                                                          'class':'form-control'}))
    title_text.group = 1
    
    
    
    # add triggering here
    abuse = forms.BooleanField(label = 'Abuse (physical, sexual, emotional and verbal)', required=False)
    abuse.group = 2
    violence = forms.BooleanField(label = 'Violence and Assault', required=False)
    violence.group = 2
    drug = forms.BooleanField(label = 'Drug and/or Alcohol misuse', required=False)
    drug.group = 2
    mentalhealth = forms.BooleanField(label = 'Mental Health Issues', required=False)
    mentalhealth.group = 2
    negbody = forms.BooleanField(label = 'Negative body image', required=False)
    negbody.group = 2

    other = forms.CharField(label='Other',
                            strip=True,
                            max_length=150,
                            widget=forms.TextInput(), required=False)
    other.group = 2

    # sharing options
    viewable = forms.BooleanField(label = "Share on AutSPACE website", required=False)
    viewable.group = 3
    research = forms.BooleanField(label = "Share for research", required=False)
    research.group = 3

    # hidden field for moderation status
    statuses = [
        ("not reviewed", "not reviewed"),
        ("in review", "in review"),
        ("approved", "approved"),
        ("rejected", "rejected"),
    ]
    moderation_status = forms.ChoiceField(choices = statuses, widget = forms.Select(), required=False)
    moderation_status.group = "hidden"

    def __init__(self, *args, **kwargs):
        """ Disable free text fields to the moderator, or disable all fields if in 'read only' mode"""

        disable_all = kwargs.pop('disable_all', False) #disable everything
        disable_moderator = kwargs.pop('disable_moderator', False) # only the free text fields

        super(ShareExperienceForm, self).__init__(*args, **kwargs)


        for field in self.fields:
            if field in ['experience_text','difference_text','title_text','research','viewable']: 
                self.fields[field].widget.attrs['disabled']= disable_moderator or disable_all
            else:
                self.fields[field].widget.attrs['disabled']= disable_all


    def clean_moderation_status(self):
        mod_status = self.cleaned_data['moderation_status']
        if not mod_status:
            mod_status = 'not reviewed'

        return mod_status


class ModerateExperienceForm(forms.Form):
        
    # trigger labels
    abuse = forms.BooleanField(label = 'Abuse (physical, sexual, emotional and verbal)', required=False)
    abuse.group = 2
    violence = forms.BooleanField(label = 'Violence and Assault', required=False)
    violence.group = 2
    drug = forms.BooleanField(label = 'Drug and/or Alcohol misuse', required=False)
    drug.group = 2
    mentalhealth = forms.BooleanField(label = 'Mental Health Issues', required=False)
    mentalhealth.group = 2
    negbody = forms.BooleanField(label = 'Negative body image', required=False)
    negbody.group = 2

    other = forms.CharField(label='Other',
                            strip=True,
                            max_length=150,
                            widget=forms.TextInput(), required=False)
    other.group = 2

    # moderation options 
    statuses = [
        ("not reviewed", "not reviewed"),
        ("in review", "in review"),
        ("approved", "approved"),
        ("rejected", "rejected"),
    ]
    moderation_status = forms.ChoiceField(choices = statuses, widget = forms.Select(), required=False)
    moderation_status.group = "hidden"

    moderation_comments = forms.CharField(label='Moderator comments', max_length=500, strip=True, required=False,
                                 widget=forms.Textarea(attrs={'placeholder':'Moderator comments go here',
                                                              'rows':'4',
                                                              'class':'form-control'}))
    moderation_comments.group = "hidden"

    def __init__(self, *args, **kwargs):
        """ Disable free text fields to the moderator, or disable all fields if in 'read only' mode"""

        disable_all = kwargs.pop('disable_all', False) #disable everything
        disable_moderator = kwargs.pop('disable_moderator', False) # only the free text fields

        super(ModerateExperienceForm, self).__init__(*args, **kwargs)


        for field in self.fields:
            if field in ['experience_text','difference_text','title_text','research','viewable']: 
                self.fields[field].widget.attrs['disabled']= disable_moderator or disable_all
            else:
                self.fields[field].widget.attrs['disabled']= disable_all


    def clean_moderation_status(self):
        mod_status = self.cleaned_data['moderation_status']
        if not mod_status:
            mod_status = 'not reviewed'

        return mod_status
server/apps/main/context_processors.py METASEP
from openhumans.models import OpenHumansMember

def create_auth_url(request):
    auth_url = OpenHumansMember.get_auth_url()
    return {'auth_url': auth_url}

server/apps/main/apps.py METASEP
from django.apps import AppConfig


class Main(AppConfig):
    name = 'main'

server/apps/main/admin.py METASEP
from django.contrib import admin
from server.apps.main.models import PublicExperience, ExperienceHistory

admin.site.register(PublicExperience)
admin.site.register(ExperienceHistory)
server/apps/main/__init__.py METASEP

server/apps/main/helpers.py METASEP

import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
infile
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
        pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)
        
        # .save() updates if primary key exists, inserts otherwise. 
        pe.save()

        if pe.experiencehistory_set.count() == 0:
            change_type = "Make Public"
            change_comments = "Story flagged to be shared on AutSPACE website"
        elif change_comments == None:
            change_comments = "Story edited"
        # Produce and add the ExperienceHistory object to the public experience
        eh = ExperienceHistory(experience=pe,
                                change_type = change_type, 
                                changed_at = datetime.datetime.now(),
                                changed_by = str(ohmember),
                                change_comments = change_comments)

        eh.save()
        # change_type = models.TextField()
        # changed_at = models.DateTimeField(auto_now=True)
        # changed_by = models.TextField()
        # change_comments = models.TextField(default="")  
        
    else:
infile
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


infile
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

infile
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
        pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)
        
        # .save() updates if primary key exists, inserts otherwise. 
        pe.save()

        if pe.experiencehistory_set.count() == 0:
            change_type = "Make Public"
            change_comments = "Story flagged to be shared on AutSPACE website"
        elif change_comments == None:
            change_comments = "Story edited"
        # Produce and add the ExperienceHistory object to the public experience
inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
inproject
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
        pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)
        
        # .save() updates if primary key exists, inserts otherwise. 
        pe.save()

        if pe.experiencehistory_set.count() == 0:
            change_type = "Make Public"
            change_comments = "Story flagged to be shared on AutSPACE website"
        elif change_comments == None:
            change_comments = "Story edited"
        # Produce and add the ExperienceHistory object to the public experience
        eh = ExperienceHistory(experience=pe,
                                change_type = change_type, 
                                changed_at = datetime.datetime.now(),
                                changed_by = str(ohmember),
                                change_comments = change_comments)

common
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
common
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
common
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

common
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
            'data': data,
            'timestamp': str(datetime.datetime.now())}

    # by saving the output json into metadata we can access the fields easily through request.user.openhumansmember.list_files().
    metadata = {

        'uuid': uuid,   
        'description': data.get('title_text'),
        'tags': make_tags(data),
        **output_json,
        }

    # create stream for oh upload
    output = io.StringIO()
    output.write(json.dumps(output_json))
    output.seek(0)


    ohmember.upload(
        stream=output,
        filename=f"{uuid}.json", #filename is Autspaces_timestamp
        metadata=metadata)


def make_uuid():
    return str(uuid.uuid1())

def delete_PE(uuid, ohmember):
    if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():
            PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()


def update_public_experience_db(data, uuid, ohmember, change_type="Edit", change_comments=None):
    """Updates the public experience database for the given uuid.

    If data is tagged as viewable, an experience will be updated or inserted.
    If a data is tagged as not public, this function ensures that it is absent from the pe db.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
        moderation_status (str, optional): Defaults to 'in review'.
    """

    if data.pop('viewable',False):
        data.pop('open_humans_member', None) # Remove from dict as needs to be an object not string
        data.pop('experience_id', None) # Remove from dict as needs to be an object not string
        data.pop('moderation_comments', None) # Only need when moderating
        
        pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)
        
        # .save() updates if primary key exists, inserts otherwise. 
common
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
non_informative
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")
non_informative
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

non_informative
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
random
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

random
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
random
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

random
import datetime
import json
import io
import uuid
from django.contrib.auth.models import Group
from django.forms.models import model_to_dict
from .forms import ModerateExperienceForm
from .models import PublicExperience, ExperienceHistory

def is_moderator(user):
  """return membership of moderator group"""

  try:
    group = Group.objects.get(user=user)
    return (group.name == "Moderators")

  except Group.DoesNotExist:
    return False


def model_to_form(model, disable_moderator = False):
    model_dict = model_to_dict(model)

    form = ModerateExperienceForm({**model_dict,
        "viewable":True #we only moderate public experiences
    }, disable_moderator=disable_moderator)

    return form

def extract_experience_details(model):
    """
    Extract the immutable details of the story and the sharing options only
    """
    model_dict = model_to_dict(model)

    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody', 'other', 'moderation_status']:
        model_dict.pop(key, None)
    model_dict['viewable'] = True # Only moderate viewable experiences

    return model_dict


def process_trigger_warnings(form):
    """
    Get the mutable trigger warnings from the data
    """
    form.is_valid()
    # Populate with values from moderation form
    trigger_warning_dict = {k: form.cleaned_data[k] for k in form.data.keys() if k not in ['csrfmiddlewaretoken', 'research']}

    # Set all others as False
    for key in ['abuse', 'violence', 'drug', 'mentalhealth', 'negbody']:
        if key not in trigger_warning_dict.keys():
            trigger_warning_dict[key] = False
    
    return trigger_warning_dict

def reformat_date_string(context):
     """
     Convert the date string back to a datetime object
     """
     for file in context['files']:
         file['created'] = datetime.datetime.strptime(file['created'], '%Y-%m-%dT%H:%M:%S.%fZ')
     return context

def get_review_status(files):
    """Given a list of files, count the number of each moderation status of the publicly viewable files

    Args:
        files (dict): list of files, which are dictionaries. See `upload()`.

    Returns:
        statuses (dict): counts of moderation statuses
    """


    status_list = [f['metadata']['data']['moderation_status'].replace(' ','_') for f in files if f['metadata']['data']['viewable']]

    statuses = {f"n_{s}":status_list.count(s) for s in set(status_list)}

    statuses["n_viewable"] = len(status_list)
    statuses["n_moderated"] = status_list.count('approved') + status_list.count('rejected')

    return statuses


def get_oh_file(ohmember, uuid):
    """Returns a single file from OpenHumans, filtered by uuid.

    Args:
        ohmember : request.user.openhumansmember
        uuid (str): unique identifier

    Raises:
        Exception: If uuid belongs to more than one file.

    Returns:
        file (dict): dictionary representation of OpenHumans file. Returns None if uuid is not matched.
    """
    files = ohmember.list_files()
    file = [f for f in files if f["metadata"]["uuid"]==uuid]

    if len(file)==0:
        file=None
    elif len(file)>1:
        raise Exception("duplicate uuids in open humans")

    return file[0]


def delete_single_file(uuid, ohmember):
    """Deletes a given file id and uuid from openhumans and ensures absence from local PublicExperiences database.

    Args:

        uuid (str): unique identifier, used for PublicExperience primary key and for OpenHumans filename.
        ohmember : request.user.openhumansmember
    """

    ohmember.delete_single_file(file_basename=f"{uuid}.json")
    delete_PE(uuid,ohmember)


def make_tags(data):
    """builds list of tags based on data"""

    tag_map = {'viewable': {'True':'public',
                            'False':'not public'},
               'research': {'True':'research',
                            'False':'non-research'},
                'drug':    {'True': 'drugs',
                            'False': ''},
                'abuse':    {'True': 'abuse',
                            'False': ''},
                'negbody':  {'True': 'negative body',
                            'False': ''},
                'violence': {'True': 'violence',
                            'False': ''},
                'mentalhealth': {'True': 'mental health',
                            'False': ''},
                'moderation_status': {'True': '',
                            'False': 'in review'}
                            }

    tags = [tag_map[k].get(str(v))
            for k,v in data.items()
            if k in tag_map.keys()]
    if data["other"] != '':
        tags.append("Other triggering label")

    return tags


def upload(data, uuid, ohmember):
    """Uploads a dictionary representation of an experience to open humans.

    Args:
        data (dict): an experience
        uuid (str): unique identifier
        ohmember : request.user.openhumansmember
    """

    output_json = {
random
        'tags': make_tags(data),         delete_PE(uuid,ohmember)     ohmember.upload(     ohmember.delete_single_file(file_basename=f"{uuid}.json")             PublicExperience.objects.get(experience_id=uuid, open_humans_member=ohmember).delete()         eh = ExperienceHistory(experience=pe,     files = ohmember.list_files()         pe = PublicExperience(open_humans_member=ohmember, experience_id=uuid, **data)     form = ModerateExperienceForm({**model_dict,     if PublicExperience.objects.filter(experience_id=uuid, open_humans_member=ohmember).exists():         eh.save()         'description': data.get('title_text'),     group = Group.objects.get(user=user)     tags = [tag_map[k].get(str(v))         pe.save()     Get the mutable trigger warnings from the data     Args:     elif len(file)>1:     return form     if data["other"] != '':   try:             'data': data,