Awesome
The Code of Conduct establishes and communicates the commitment of the ml5.js community to uphold a key set of standards and obligations that aim to make ml5.js a friendly and welcoming environment. Read more about the team's process and approach on our Medium post.
This is version 1.0 of the Code of Conduct. It was last updated on May 10, 2021.
🌈 Community Statement
ml5.js is a community interested in exploring and empowering the creative and ethical application of machine learning. This Code of Conduct is intended to foster a community that is open to anyone interested in joining that exploration.
We are a community of, and in solidarity with, people from every gender identity and expression, sexual orientation, race, ethnicity, size, ability, class, religion, culture, age, skill level, occupation, and background. We acknowledge that not everyone has the time, financial means, or capacity to actively participate, but we recognize and encourage involvement of all kinds. We facilitate and foster access and empowerment. We are all learners.
We accept the claim that technology is a reflection of society, its histories, and its politics. We reject the claim that any technology is neutral and acknowledge that every technology has the potential to do as much harm as good. We acknowledge that when technologies cause harm, the harm disproportionately affects Black/Indigenous, People of Color (BIPOC) queer, trans, disabled, femme, low-income, survivors, and all other marginalized bodies and communities. With this understanding, we work to intentionally engage these groups when hosting, participating in, or developing events (e.g. workshops or meetings), materials (e.g. courses, syllabi, resources), and software (e.g. the ml5.js library, examples, and related and supporting code).
As part of the ml5.js Code of Conduct, we pledge to design, build, and use ml5.js in a way that centers the aforementioned marginalized bodies and communities first, striving to always confront our biases, privileges, and ignorances for our own good and society at large.
In practice:
- We welcome newcomers and prioritize the education of others. We do not assume knowledge or imply there are things that somebody should know. We strive to approach all tasks with the enthusiasm of a newcomer because we believe that newcomers are just as valuable in this effort as experts.
- We consistently make the effort to actively recognize and validate multiple types of contributions.
- We work to offer help and guidance when we are able to do so.
In times of conflict:
- We listen.
- We clearly communicate while acknowledging others’ feelings.
- We admit when we're wrong, apologize, and accept responsibility for our actions.
- We are continuously seeking to improve ourselves and the community.
- We keep the community respectful and open.
- We make everyone feel heard.
- We are mindful and kind in our interactions.
🌍 Overview
This Code of Conduct is designed to apply to behavior within the ml5 community and to the uses of the ml5.js library. Members of the ml5 community are expected to follow the Code of Conduct when participating in the community spaces described below. Software that uses the ml5.js library is required to follow the Code of Conduct by the library’s copyright license.
The ml5.js community expects everyone to work towards creating a harassment-free experience for everyone. We pledge to act in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. We recognize that harassment-free is not the same as disagreement-free or even conflict-free.
Scope
This Code of Conduct applies within all ml5.js community spaces online and offline and when using the ml5.js JavaScript library and accompanying materials. It describes the behavior we expect from community members and how behavior that may violate the Code of Conduct will be handled.
Software that violates the Code of Conduct does not meet the requirements of the ml5.js copyright license. Software that uses the ml5.js library must continue to comply with the evolving Code of Conduct.
Members of the ml5.js community who violate the Code of Conduct may be asked to leave the community. Personal behavior that violates the Code of Conduct does not automatically mean that software created by that person violates the Code of Conduct. Additionally, community members who follow the Code of Conduct in community spaces may still create software that violates the Code of Conduct.
Maintainers and leaders of the ml5.js project are expected to follow the Code of Conduct when representing the community both inside and outside of community spaces. Representing ml5.js includes using an official ml5js.org e-mail address, posting via an official social media account, interacting on ml5.js GitHub Issues or Pull Requests, in chat rooms such as on Slack or Discord, writing code for the library or creating any ml5.js related materials, or acting as an appointed representative at an online or offline event. Members of the community are also expected to follow the Code of Conduct when participating in ml5.js community spaces. At present this applies to:
- All ml5.js GitHub repositories
- ml5.js Discord channel
- Any virtual or in-person workshops or events organized by ml5.js
In addition to the official ml5.js community spaces, members of the community are expected to follow the Code of Conduct when interacting with official ml5.js accounts on social media. At present, the only official account is @ml5js on Twitter.
To be part of the ml5.js community is to accept, support, and engage with the Code of Conduct.
🗂 Our Standards
The Code of Conduct represents the ml5.js community’s attempt to develop an evolving collective understanding of what it means to use machine learning creatively, appropriately, ethically, and critically. We recognize that behavior within the ml5.js community and projects using the ml5.js library must be interpreted on the basis of their context. While the intentions of the artist--the developer--may be “good,” we agree that good intentions do not always lead to positive impacts.
We expect these standards to evolve over time and invite contributions from the community to expand, clarify, or reword them.
Behavior within the community
Do
- Be mindful of your language.
- Use your best judgement. If it will possibly make others uncomfortable unnecessarily, do not post it.
- Be respectful. Disagreement is not an opportunity to attack someone else's thoughts or opinions. Although views may differ, remember to approach every situation with patience and care.
- Be considerate. Think about how your contribution will affect others in the community.
- Be open-minded. Embrace new people and new ideas. The community is continually evolving, and we welcome positive change.
Do Not
- Engage in any of the following types of behavior:
- Offensive comments related to gender identity and expression, sexual orientation, race, ethnicity, language, neuro-type, size, ability, class, religion, culture, subculture, political opinion, age, skill level, occupation, or background
- Threats of violence
- Deliberate intimidation
- Sexually explicit or violent material that is not contextualized and preceded by a considerate warning
- Unwelcome sexual attention
- Stalking or following
- Or any other kinds of harassment
Use of the ml5.js software library
Do
- Teach with ml5.js
- Make creative projects with ml5.js
- Use ml5.js for social good
Do Not
- Use ml5.js to build tools that discriminate against marginalized communities
- Discrimination includes tools that actively disfavor marginalized groups as well as tools that make it easier for programs to identify members of sensitive groups. This discrimination can be direct (e.g. systematically undervaluing femme-coded job candidates) or indirect (e.g. contributing to a data feedback loop where police resources are over-allocated to minority neighborhoods, thus resulting in more arrests of the residents of those neighborhoods).
- Use ml5.js to build tools to disingenuously manipulate public opinion
- ml5.js supports activism and advocacy. However, ml5.js may not be used to create tools that maliciously and/or opaquely distort public opinion. This includes creating bots to maliciously distribute fake news or deep fakes to provide evidence of events that never occurred in order to improperly influence public opinion.
- Use ml5.js to build tools of mass surveillance and prediction to repress the rights of people
- Machine learning can be used to analyze data about large numbers of people and to use that data to predict future trends. Although there can be legitimate uses of these tools, they are too often used to repress the rights of others.
- Use ml5.js to build tools that control weapons -This includes tools that automate the deployment, operation, and targeting of weapons
Upholding the ml5.js Code of Conduct...
The Code of Conduct Steering Committee is responsible for clarifying and enforcing the standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
The Code of Conduct Steering Committee will strive to publicize Code of Conduct enforcement decisions when doing so will benefit the community. It will also maintain an archive of all complaints and enforcement decisions.
...within the community
The Code of Conduct Steering Committee has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. It also has the right and responsibility to request that individuals leave the community, either temporarily or permanently.
If you believe that someone is violating the Code of Conduct, we ask that you report it by emailing info@ml5js.org. This email is accessible to the full Code of Conduct Steering Committee. If, for any reason, you are not comfortable reporting the violation to the full Code of Conduct Steering Committee, we invite you to report the violation to any individual member of the Code of Conduct Steering Committee. Please include a description of the incident in your report. The Code of Conduct Steering Committee works to respond to all reports in a reasonable time.
Violations of the Code of Conduct do not have to be a single severe instance. We recognize that ongoing low levels of toxic behavior can be just as harmful to the community as a single severe act.
An example of such an email would look like this:
Subject:
[Code of Conduct] Reporting a violation
Body:
Dear ml5.js leadership,
My name is ______ and I’m writing to report a violation of ml5.js community Code of Conduct. Specifically, I’d like to report ______.
Sometimes, participants violating the Code of Conduct are unaware that their behavior is harmful, and an open conversation clears things up to move forward. However, if a participant continues with the behavior, the Code of Conduct Steering Committee may take any action they deem appropriate, up to and including expulsion from all ml5.js spaces and identification of the participant as a harasser to other ml5.js members or the general public.
...within uses of the ml5.js library
Projects that make use of the ml5.ljs library are required to comply with the Code of Conduct by the ml5.js copyright license. The Code of Conduct Steering Committee is ultimately responsible for deciding if projects that incorporate the ml5.js library violate the Code of Conduct. It can make those decisions in response to a specific request, or through an investigation it initiates directly.
If you believe that a project that incorporates ml5.js violates the Code of Conduct, or are concerned that your own project may violate the Code of Conduct, we ask that you email info@ml5js.org.
- Reach out to the accused project maintainers in order to discuss the violation and ways to resolve the violation. That may include realigning the project with this Code of Conduct or removing ml5.js from the project entirely. Accused violators will be given at least 30 days to resolve a violation before it is determined to be final. The Code of Conduct Committee may extend this timeline in order to accommodate an investigation into the accusation.
- Publicly identify the project as being in violation of the Code of Conduct.
If these steps do not result in a resolution, the Code of Conduct Committee may formally determine that the project is in violation of the Code of Conduct. That finding will cause the project to fall out of compliance with the terms of the ml5.js software license.
Once an investigation is completed, the Code of Conduct Committee will strive to make the decision and reasoning resulting from the investigation available to the wider community. This will help the community understand how the Code of Conduct is applied in practice.
ml5.js Code of Conduct Committee
The Code of Conduct Committee is responsible for maintaining the Code of Conduct, managing discussions about additions and subtractions, interpreting the Code of Conduct, and enforcing its rules.
The Code of Conduct Committee is currently made up of a selection of ml5.js community members responsible for originally drafting this Code of Conduct. It is responsible for upholding the Code of Conduct, maintaining the Code of Conduct, and developing governance structures for the Code of Conduct Committee itself. The Code of Conduct Committee will strive to make its enforcement decisions public in order to help the community better understand how the Code of Conduct can be applied in any given situation.
The Code of Conduct Committee’s members are:
- Christina Dacanay
- Lydia Jessup
- Sam Krystal
- Joey Lee
- Ashley Jane Lewis
- Bomani Oseni McClendon
- Daniel Shiffman
- Michael Weinberg
🌱 Developing and Growing the Code of Conduct
The ml5.js Code of Conduct is an ever-evolving document that establishes and communicates the commitment of the ml5.js community to uphold a key set of standards and obligations that aim to make ml5.js a friendly and welcoming environment.
This Code of Conduct is collaboratively developed by the ml5.js community. It was originally adopted in 2021 after a community consultation and discussion that began in January of 2020. That process also created the Code of Conduct Committee.
We expect the Code of Conduct to be a living document. Its evolution will take at least two forms.
First, the elements may change. Some rules may be added, while others may be removed. The Code of Conduct Steering Committee will strive to make sure that the text of the Code of Conduct continues to reflect the community understanding of the spirit of the Code of Conduct.
Second, the elements will be clarified through interpretation. ml5.js is used in a wide range of projects. The Code of Conduct is made up of high level principles that may apply differently to each of those projects. The Code of Conduct Steering Committee intends to publicize interpretations to the Code of Conduct as it makes them. We hope that this will add context to the principles over time.
📊 A word about data and data sets
Machine learning heavily relies on data and datasets. Therefore, we have incorporated a non-exhaustive list of best practices to consider when working with data into this Code of Conduct, as well as resources that we recommend the community use. Although these best practices are not formally part of the Code of Conduct’s standards, understanding and following them will make it easier to comply with those standards.
If you are new to working with algorithms and data, we especially recommend A People’s Guide to AI for learning about the relationship between machine learning algorithms and data. “Embodying Social Algorithms” (p.36) is a great activity to start with for thinking in particular about how the data you use relate to the output and if those data are the right way to measure the information you’re interested in.
Best data practices include at a minimum, but are not limited to the following:
- Know your dataset (see Datasheets for Datasets below)
- Explain the methods you used in your analysis and steps you took in data processing
- Explain and be transparent about the limitations of your data and analysis
- Make your sources clear and available when possible
- Protect and do not expose personally identifiable information
The field of machine learning currently lacks a standard method for documenting datasets. We encourage the community to use the Datasheets for Datasets questions that were developed to address this gap. This approach is particularly helpful because it outlines best practices and important questions to ask yourself at each of the below stages in the process of working with data while doing machine learning:
- Motivation
- Composition
- Collection Process
- Preprocessing/cleaning/labeling
- Uses
- Distribution
- Maintenance
Citations/Sources of Inspiration/Fellow Travelers
Projects that we have drawn language from:
- p5.js - Community Guidelines
- Cloud 9 - Community Guidelines
- Contributor Covenant - Code of Conduct
- Open Source Guides - Writing Codes of Conduct
- Blue Oak Council - Model License
Other projects that we have drawn inspiration from:
- The Creative Independent - Designing for Diversity
- UnifiedJS - Moderation Policy
- TC39 - Code of Conduct
- Rust - Code of Conduct
- United Nations - Universal Declaration of Human Rights
- Cities for Digital Rights - Declaration
- The Hippocratic License - An Ethical License for Open Source Projects
- The Anti-Capitalist Software License
- MIT License
Copyright License on the CoC
This Code of Conduct is dedicated to the public domain using the Creative Commons Zero Public Domain Dedication tool. You are free to use this Code of Conduct in any manner you choose without additional permission or credit.
We considered other licensing options such as the CC BY or CC BY-SA license. However, we recognize that attribution can be challenging when integrating parts of one document into another document. CC0 eliminated that barrier to use.
Even though we are using CC0, we would still love to know if you use parts of this Code of Conduct! Please reach out to info@ml5js.org if you find it helpful.