A purple and pink graphic reading “ml5.js Code of Conduct: Call for Comment”
ml5.js Code of Conduct: Call for Comment

ml5.js Code of Conduct

Published in
7 min readJan 12, 2021

Today we are asking for your help to make ml5.js even better.

We are always looking for ways to help ml5.js live up to its goal of being a neighborly approach to creating and exploring artificial intelligence in the browser. We have been working on a new way to do that and are excited to share it with you for feedback! We are proposing a way to link our Code of Conduct with the software license to make ml5 even more friendly. There is information about how to send us feedback at the bottom of this post.

ml5.js helps artists, coders, and students do creative things with machine learning by making it approachable and friendly to learn. ml5.js can be a force for powerful creativity. This is rewarding when it is used for creative exploration that improves the world. It is concerning when it is used to create tools that makes the world a less friendly place.

A woman sits in front of a screen giving a presentation about about ml5.js
Christina Dacanay facilitating a workshop at Tech for Social Good Day

ml5.js — the library, the website, the community — encourages you to build positive things and discourages you from building harmful ones. Almost a year ago, we began exploring ways that we might be able to use a license to help further encourage good things while discouraging bad things.

Our goal was to find a way to keep ml5.js grounded in the spirit of open source, while reducing the chance that it could be abused for purposes that we feel run counter to the expectations of the ml5.js community.

We know that using a license for this purpose is controversial in the open source world. Nonetheless, we believe that we may have a model that integrates the goals of open source with a concern about the ethical use of powerful software. We know that this model will not work for everyone. We hope that it will work for the ml5.js community we are building together.

The Approach: Combining a License with a Code of Conduct

Defining ‘good’ and ‘bad’ behavior is one of the biggest challenges in drafting ethically-grounded licenses. While it may be easy to categorize any given use of software at a moment in time, capturing the breadth of possible uses of software that is freely available on the internet — possibly for decades to come — is an almost insurmountable challenge. Even the most carefully crafted language is likely to miscategorize edge cases that exist at the moment of its drafting. It will inevitably also fail to anticipate uses in the decades that follow.

We have attempted to address this by shifting our behavioral expectations out of the license and into the Code of Conduct. Structurally, that allows us to move the discussion of behavior away from the license itself and into a more community-accessible document. This document has freedom to evolve over time. It has the additional advantage of being structured in a way that is more approachable for the majority of the ml5.js community.

Collaborating on, working with, and improving codes of conduct are familiar activities for large parts of the ml5.js community. We hope that using a Code of Conduct instead of a license to document expectations makes it easier for the community to understand and contribute to them.

Joey Lee and Yining Shi leading a workshop about ml5.js for ITP Camp

Interpretive Committee

Even the most comprehensive Code of Conduct will fail to anticipate all possible uses. Additionally, various members of the community may apply the Code of Conduct differently to the same set of facts.

To address both of these challenges we are establishing a Code of Conduct review committee drawn from the ml5.js community. The combination of a Code of Conduct and interpretation committee will inject a human element into decisions about morality that can evolve along with the larger community. We think people should be involved in making decisions, especially those that have to do with ethics. The committee is empowered to apply the Code of Conduct to novel scenarios that have not yet been integrated into the text of the Code of Conduct itself. That allows the Code of Conduct to evolve in the face of new uses.

While this flexibility can be an asset, it can also undermine user confidence in the license itself. Users might be concerned that a single contributor with an idiosyncratic interpretation of the Code of Conduct could decide that a well-meaning project is outside the scope of the license. That is why the committee must agree that a user is in violation of the Code of Conduct before the user is considered to be in violation of the license. In these scenarios, the committee acts as a stabilizing force in the interpretation of the license.


Anyone who uses ml5.js does so under the terms of a license. Our proposed license includes an obligation to only use ml5.js in ways that fall within the behavior outlined in our Code of Conduct.

If someone uses ml5.js in a way that does not meet the expectations in the Code of Conduct their project would no longer be covered by the license. Contributors to ml5.js can ask the Code of Conduct Committee to decide if a project goes against the Code of Conduct. The license requires that the Code of Conduct Committee agrees that the project violates the Code of Conduct before a project is no longer covered by the license.

This review process creates a single interpretation of the Code of Conduct, and prevents ml5.js users from being tripped up by fringe interpretations of the rules.

Rules for a Limited Time

We have built an additional safeguard into the license: license decay.

A challenge in defining ethical behavior in a license is the length of time the definition will need to apply. In almost all countries, copyright lasts for decades. That means that a license that is applied in 2020 needs to create ethical rules that are still applicable in 2050, 2100, and beyond.

We don’t think we can do that. That’s why the new parts of our license are only in force for three years. After that initial period, the license ‘decays’ and reverts to a much less restrictive MIT license. In addition to limiting the amount of time a static ethical interpretation may apply, this decay also makes it easier for us to fix problems or make changes going forward.

In practice, as long as ml5.js is being actively developed there will always be parts of the source code that are new enough to be covered by our new license and the Code of Conduct. However, if active development ever stops (or we decide to change our licensing approach), after three years the heightened obligations will fade away.

A Different Approach

The open source licensing community has long discouraged attempts to incorporate ethical concerns into open source licenses. Doing so violates the terms of the Open Source Definition maintained by OSI. More practically, many commentators have pointed out the challenges inherent in creating robust definitions of ‘good’ and ‘bad’ behavior that could reliably be applied to the wide range of possible contexts in which open source software might be used. The extended term of copyright protection only enhances this challenge.

Nonetheless, many committees steeped in open source ethos continue to seek ways to limit what they view as non-ethical uses of the technology they help to develop. Projects such as the Hippocratic License and the Anti-Capitalist Software License speak to a desire within the open source software community to limit what software creators view as non-ethical downstream uses of their work.

We recognize that our proposal to use a license (based on — but certainly not endorsed by — the Blue Oak Model License 1.0.0) to bind users of ml5.js to a code of conduct as interpreted by a committee may not be for everyone. Some users will be wary of a code of conduct, or of the uncertainty that it injects into using ml5.js. Others will be skeptical that the ml5.js community is willing to maintain the infrastructure required by the licensing approach. These kinds of user-limiting concerns drive some of the historical wariness of ethically-grounded open source licenses.

Nonetheless, the ml5.js community has decided that the cost of losing some of these users is worth the benefits of the license itself, as well as the benefits of the signal that the use of the license sends to potential users. ml5.js is a community that is dedicated to friendly machine learning for the web. Users who are not interested in that type of machine learning are invited to go elsewhere.

Contact Us

Bomani Oseni McClendon tests the HandPose model in ml5.js

ml5.js is a community effort and we welcome your thoughts on this approach. We encourage you to raise specific concerns about the Code of Conduct by filing an issue in the repo. As always, you can always reach out on Twitter, on Discord, or via email at feedback@ml5js.org. We look forward to hearing from you!



Editor for

Friendly Machine Learning for the Web. ml5.js aims to make machine learning approachable for a broad audience of artists, creative coders, and students.