Golan Levin: I’m thrilled to intro­duce our sec­ond pre­sen­ter this evening, Bomani Oseni McClendon, who is a Brooklyn-based engi­neer and edu­ca­tor work­ing with soft­ware and elec­tron­ic crafts. A con­trib­u­tor to the ml5.js project, Bomani builds soft­ware to sup­port artists, and teach­es elec­tron­ic cir­cuit­ry and phys­i­cal com­put­ing to under­grad­u­ates at Parsons School of Design and through free pro­grams for pri­ma­ry school stu­dents in Red Hook, Brooklyn. In his cre­ative prac­tice Bomani stud­ies the ways that Black health out­comes are influ­enced by a his­to­ry of sci­en­tif­ic racism, exam­in­ing his own prox­im­i­ty to a tech­noso­lu­tion­ist mono­cul­ture and the med­ical indus­try as a start­ing point. He holds a Bachelor of Science in Computer Science from Northwestern University, where he focused on human-computer inter­ac­tion and learn­ing sci­ences. Bomani McClendon. 

Bomani Oseni McClendon: Hey every­one. Good to see you all. My name is Bomani Oseni McClendon. Thank you all so much for com­ing to this talk. I’m real­ly excit­ed to be here with you all. And I want to start by just thank­ing Golan and the STUDIO for Creative Inquiry as well for hold­ing space for us to speak about our work today and for bring­ing us togeth­er in this amaz­ing com­mu­ni­ty of open source artists and tech­nol­o­gists over the last few months of the OSSTA residency. 

Today I’m going to talk about a project called ml5.js, an open source project which has been the focus of my work through­out the res­i­den­cy. But first I’ll just intro­duce myself to pro­vide some con­text about the direc­tion from which I’m approach­ing this work. 

So, I’m an engi­neer, edu­ca­tor, and health work­er liv­ing in Brooklyn, New York. I’ve always been excit­ed about cir­cuits and soft­ware. I stud­ied com­put­er sci­ence in uni­ver­si­ty, with a focus on human-computer inter­ac­tion and learn­ing sci­ences and media tech­nolo­gies. And I think that one of the most amaz­ing things about soft­ware in par­tic­u­lar is the fact that with only a lap­top and an Internet con­nec­tion, you can build so much. And so using soft­ware as a medi­um, I found it deeply grat­i­fy­ing, actu­al­ly, to be able to exper­i­ment and to play in this space. 

I became pri­mar­i­ly inter­est­ed in work­ing cre­ative­ly with tech­nol­o­gy after being the lead soft­ware devel­op­er for a large-scale inter­ac­tive art piece called Shrumen Lumen, which is here, as a mem­ber of the Foldhaus Collective based in the Bay Area. 

And so since then I’ve had the oppor­tu­ni­ty to work in sup­port of artists and edu­ca­tors. To name a cou­ple of exam­ples, I built an app to sup­port an exhi­bi­tion on pre­dic­tive polic­ing for an American artist who was doing a show at Queens Museum, and a small com­pa­ny I cofound­ed called Dialup Digital col­lab­o­rat­ed with an artist named Ryan Kuo to build an online con­ver­sa­tion­al chat­bot called Baby Faith which is focused on online disinformation. 

I worked on an inter­face called Genius Home Studio, which helps new pro­duc­ers craft beats and learn how to do that all through an online workstation. 

And I cur­rent­ly work as a senior soft­ware engi­neer at a com­pa­ny called Duolingo that’s actu­al­ly not so far from the Carnegie Mellon cam­pus build­ing tools to sup­port lan­guage educators. 

On that top­ic of edu­ca­tion, I’m real­ly pas­sion­ate about teach­ing. I began my teach­ing prac­tice through a work­shop series called Out of the Black Box I cre­at­ed with my friend and coteacher Neta Bomani with sup­port from Pioneer Works Art Foundation and Good Shepherd ser­vices here in New York City. And through this pro­gram we have the oppor­tu­ni­ty to teach pri­ma­ry school stu­dents liv­ing in Red Hook, Brooklyn about elec­tron­ic cir­cuit­ry through arts and crafts activ­i­ties. And I cur­rent­ly teach about elec­tron­ic cir­cuit­ry and phys­i­cal com­put­ing at Parsons School of Design in the under­grad­u­ate design and tech­nol­o­gy major. 

My per­son­al prac­tice and com­mu­ni­ty work has cen­tered around top­ics of social health and med­ical dis­par­i­ties. And this is a space that I’ve come to through my own per­son­al expe­ri­ence sup­port­ing fam­i­ly mem­bers who’re deeply affect­ed by the med­ical sys­tem, or through talk­ing with fam­i­ly mem­bers who’re health work­ers. And specif­i­cal­ly I’m inter­est­ed in the ways that sci­en­tif­ic racism is used as an ide­o­log­i­cal basis for a soci­ety that turns black peo­ple into clin­i­cal material. 

For exam­ple, in one project I was inter­est­ed in the ways that online media is used as a promi­nent vec­tor for spread­ing med­ical nar­ra­tives that pathol­o­gize Blackness. Many state­ments on Black health out­comes are often over­look­ing all of the roles that socioe­co­nom­ic dis­par­i­ties play in those out­comes, and anti-Blackness plays in those out­comes, and it leads peo­ple to believe that these dis­par­i­ties are account­ed for by genet­ic or evo­lu­tion­ary dif­fer­ences and defi­cien­cies asso­ci­at­ed with our race. And so they kind of posi­tion race as the dis­ease. So for this project, I wrote a pro­gram that auto­mat­i­cal­ly crawled through hun­dreds of arti­cles on WebMD to col­lect every sen­tence con­tain­ing the word black” or African” and I print­ed the result­ing data set into a book called Black Health. And flip­ping through the book you can kind of feel the weight of how these issues and these health dis­par­i­ties are affect­ing our com­mu­ni­ty, but you can also kind of start to cri­tique the ways in which these top­ics are dis­cussed and how they lack so much nec­es­sary context. 

And some­times I also like to think about these ideas more sym­bol­i­cal­ly. This is a piece called Informed Consent, which is an emo­tion­al remem­brance of an expe­ri­ence sup­port­ing my par­ent through his process of sign­ing an informed con­sent con­tract for mul­ti­ple myelo­ma can­cer treat­ments. And in this project I laid out the pages of his actu­al con­tracts so that view­ers could sort of see the med­ical steril­i­ty with which this so-called informed con­sent process is actu­al­ly approached in real mod­ern stud­ies. But I also want­ed to over­lay this visu­al with hands kind of beat­ing against the pages to kin­da illus­trate this idea that many peo­ple have been caught behind these types of doc­u­ments in the past, and that the informed con­sent process is actu­al­ly also a way to exploit peo­ple and mis­in­form them in some cases. 

And most recent­ly I’ve been study­ing these con­cepts prac­ti­cal­ly. At the begin­ning this year I earned my state nation­al cer­ti­fi­ca­tions to prac­tice as an emer­gency med­ical tech­ni­cian. And over the last few months I’ve been vol­un­teer­ing through NYC Medical Reserve Corps as a COVID-19 vac­ci­na­tor admin­is­ter­ing the Moderna vac­cine here in Bushwick, Brooklyn. And I’m also a new mem­ber at Bedford-Stuyvesant Volunteer Ambulance Corps, which is a Black-led ambu­lance ser­vice pro­vid­ing emer­gency med­ical ser­vices and free med­ical train­ing to the Bed-Stuy, Brooklyn community. 

One of the things that I’ve learned through these expe­ri­ences is that the work, or care work per­haps, asso­ci­at­ed with sup­port­ing and engag­ing in these com­mu­ni­ties that I’m a part of has real­ly been deeply restora­tive to my own spir­it, espe­cial­ly through the last eigh­teen or so months. And through cre­at­ing tools to sup­port artists, teach­ing youth, or through med­ical pre­pared­ness and response, I’ve found that iden­ti­fy­ing ways to be a part of shared col­lab­o­ra­tive and com­mu­ni­ty projects that pro­duce knowl­edge or build infra­struc­ture that has been influ­en­tial and instruc­tive for me has con­nect­ed me to a lot of real­ly amaz­ing peo­ple and ideas. And so, most rel­e­vant to this pre­sen­ta­tion I want to talk about how my more recent work as an open source main­tain­er has actu­al­ly helped me learn more about how to be present in com­mu­ni­ties that are impor­tant to me. 

So you’ve heard me ref­er­ence it a few times, but let me tell you what ml5 is and kind of what it con­tributes to the open source com­mu­ni­ty. We typ­i­cal­ly describe ml5.js as a neigh­bor­ly approach to cre­at­ing and explor­ing arti­fi­cial intel­li­gence in the brows­er. In oth­er words, ml5.js aims to make machine learn­ing approach­able for a broad audi­ence of artists, stu­dents, edu­ca­tors, cre­ative coders and oth­ers, who are inter­est­ed in using machine learn­ing to make cre­ative projects on the Web. ml5.js is a beginner-focused project, mean­ing that our goal is to make the library as friend­ly as pos­si­ble to peo­ple who don’t have much or any pri­or expe­ri­ence with math, ML, or coding. 

And a pri­ma­ry ben­e­fit of ml5.js is the sim­plic­i­ty. Though our libraries inter­nal­ly use com­plex machine learn­ing algo­rithms and mod­els built with TensorFlow.js, we wrap the inter­nal log­ic with our sim­pli­fied mod­els to make it eas­i­er to use. 

We also have a wide vari­ety of edu­ca­tion­al resources from sources like The Coding Train and through var­i­ous open source ml5.js cur­ricu­lums, tuto­ri­als, demos, exam­ples and so on that have been shared by con­trib­u­tors and main­tain­ers. And since we’re deeply influ­enced by the Processing Foundation and the work of p5.js, the libraries, doc­u­men­ta­tion, and exam­ples are actu­al­ly built to express how easy it is to use ml5 and p5.js together. 

As a com­mu­ni­ty, we real­ly encour­age eth­i­cal and friend­ly uses of machine learn­ing. And over­all I would say that if you’re new to ML, or if you’re new to pro­gram­ming but you have an inter­est in lever­ag­ing ML tech­niques in your work, ml5.js might be a good place for you to start. 

So what can ml5.js do? At the moment ml5.js sup­ports over twen­ty dif­fer­ent machine learn­ing mod­els which enable a vari­ety of dif­fer­ent fea­tures. You can use mod­els like BodyPix, PoseNet, FaceMesh, Handpose, etc. to cre­ate cre­ative sort of com­put­er vision projects. Alternatively you can use mod­els like CharRNN, Sketch-RNN, CartoonGAN and so on to gen­er­ate text or images using machine learn­ing techniques. 

I’m gonna just go over a cou­ple of exam­ples here of how sim­ple it kind of is to use the soft­ware and cre­ate things like this. Mere’s a MobileNet image classifier. 

Here’s an exam­ple of style trans­fer. Again, just a cou­ple of lines of code to accom­plish this. 

And here’s PoseNet kind of show­ing full-body skele­tal track­ing, which you can then pair with oth­er tech­niques to cre­ate kind of inter­est­ing cre­ative projects. 

For exam­ple, peo­ple have used things in our library to cre­ate things like an ASL learn­ing tool using machine learn­ing com­put­er vision. Or have used the library to bring togeth­er lit­er­ary works from a vari­ety of Black schol­ars and used that to kind of gen­er­ate spec­u­la­tive new texts that com­bine some of the ideas that are com­ing from writ­ings by a vari­ety of dif­fer­ent thinkers. 

The library began in 2018 at NYU’s ITP pro­gram, with the ini­tial ground­work laid by Cristobal Valenzuela. And since then the library, soft­ware, and com­mu­ni­ty have been advanced by many con­trib­u­tors and main­tain­ers includ­ing peo­ple like Joey Lee, Dan Shiffman, Yining Shi, Ashley Jane Lewis, Christina Dacanay, Lydia Jessup, Sam Krystal, Michael Weinberg, and myself just to name a few of us. And you can see a more com­plete list of these folks on our Github page. But I want­ed to high­light this because even though I’m here speak­ing on behalf of the library today, it’s impor­tant to remem­ber that this is real­ly a community-built project and there’s tons of peo­ple who have been involved with shap­ing this work. 

I per­son­al­ly first joined the ml5 team at the begin­ning of 2020, and since then I’ve been pri­mar­i­ly focused on main­te­nance and improve­ments for the library that aim to make the ml5.js com­mu­ni­ty and code­base more approach­able to peo­ple with a wide vari­ety of back­grounds. And over the last eight or so months, I’ve oper­at­ed as the lead soft­ware main­tain­er for ml5.js. I respond to Github issues, coor­di­nate releas­es of the library, and I recent­ly added sup­port for the new TensorFlow hand pose and face mesh mod­els with­in ml5.js. I’m also part of the work­ing group that’s devel­op­ing the ml5.js code of con­duct and soft­ware license, and I’ll speak a lit­tle bit more about that code of con­duct in depth kind of lat­er in the talk. 

So, through these expe­ri­ences there have been a cou­ple of things that I’ve learned. You know, def­i­nite­ly valu­able skills in soft­ware devel­op­ment or open source work­flows, etc. But the most impor­tant things that I’ve learned have actu­al­ly been relat­ed to how I think about my roles in sup­port­ing com­mu­ni­ties, con­trib­u­tors, and also par­tic­u­lar­ly in uphold­ing com­mu­ni­ty val­ues as well. And there are a few pri­ma­ry insights, or instead I’d actu­al­ly like to call them per­son­al reminders, for myself at least, from my expe­ri­ence that I’d like to talk with you all today. 

So, the first kind of per­son­al reminder is to remem­ber that con­tri­bu­tions mean more than just Github com­mits. And I’ll illus­trate this reminder anec­do­tal­ly through a case where I actu­al­ly for­got this. So one of the things that I deeply appre­ci­ate about my expe­ri­ence with­in the ml5.js com­mu­ni­ty is that we are deeply beginner-focused. When I say beginner-focused I don’t just mean that the library’s easy for begin­ners to use. I also mean that we real­ly wel­come con­tri­bu­tions to the library from begin­ners as well. Many peo­ple have actu­al­ly tak­en their first steps into open source by mak­ing changes in the ml5.js code base or with­in our community. 

And this is per­son­al­ly why I’m excit­ed about the library, but I also rec­og­nize that this kin­da means we’re not always eas­i­ly able to meet the high­est bar of pure engi­neer­ing qual­i­ty or soft­ware main­te­nance. And to address this we’re in this gen­er­al that is focused on mak­ing improve­ments to the sta­bil­i­ty and qual­i­ty of the library. Over the first few years of the project, we had a lot of growth and a lot of change, new con­trib­u­tors, new mod­els and fea­tures, lots of growth in usage, etc. And over the last year or so, we’ve gen­er­al­ly slowed down the addi­tion of new fea­tures to focus on sta­bi­liz­ing and improv­ing what we have at the moment. 

So when I start­ed the OSSTA res­i­den­cy, I decid­ed that the best way of set­ting a goal around clean­ing up our library” was to focus on clos­ing issues which con­tained old ques­tions, or bugs, or fea­tures, and to-dos that we had­n’t yet been able to our address. And at that time, you know, I wrote down that my goal was to take us from I don’t know, around like 170 open issues or some­thing to around 50 by the end of the res­i­den­cy peri­od, most­ly by fix­ing or address­ing these issues by myself. 

Hm. And I know I can’t see y’al­l’s faces, but I do hope some of y’all are laugh­ing at me right now because it was actu­al­ly a pret­ty ridicu­lous goal to try to take that on. And as a per­son with an engi­neer­ing back­ground who also got my start in the ml5.js library by mak­ing major changes to the code­base, I sort of inad­ver­tent­ly per­ceived my role as a soft­ware engi­neer to be the per­son who could fig­ure out and fix you know, most of the issues. And what I real­ized is that not only is my knowl­edge like, limited…for exam­ple I’m not an expert on TensorFlow.js at the moment, but so is my time. Pretty busy, got a lot of dif­fer­ent things going on just like we all do. And so it actu­al­ly was­n’t tractable for me as an indi­vid­ual with the cur­rent struc­ture of my life to set a goal around clos­ing issues fast enough to reach fifty open issues. 

And so I began to feel real­ly swamped by the respon­si­bil­i­ty involved in this, and start­ed to find myself almost pro­cras­ti­nat­ing on my work with the library. Maybe this is some­thing that hap­pens to some of y’all as well. And so at this impasse, you know, it real­ly pushed me to deeply reflect on what was hap­pen­ing. In the ml5.js com­mu­ni­ty, we fre­quent­ly, fre­quent­ly high­light that con­tri­bu­tions can come in lit­er­al­ly any form: research, writ­ing, design, com­mu­ni­ty devel­op­ment, instruc­tion­al sup­port, not just cod­ing. But in my own mind I had boxed myself into a posi­tion where I could only view my con­tri­bu­tions as soft­ware changes. And this was stress­ful. It was also strate­gi­cal­ly wrong. And it lim­it­ed our library’s abil­i­ty to reach the qual­i­ty and sta­bil­i­ty goals that we had envisioned. 

So, I had to change approach­es. And with the sup­port of my team­mates and col­lab­o­ra­tors I returned to our core val­ues of open­ness and beginner-friendliness and rec­og­nized that as a lead soft­ware main­tain­er, what I actu­al­ly can con­tribute is a sup­port­ive entrance into our project, and into cod­ing for some peo­ple, into open source for some peo­ple. And so I start­ed to exper­i­ment with ways to help make more peo­ple feel excit­ed to con­tribute to ml5.js.

I start­ed a main­te­nance chan­nel in our com­mu­ni­ty Discord serv­er where I gave updates about what I was chang­ing in the library and invit­ed com­mu­ni­ty mem­bers to chime in and ask ques­tions. I did a two-hour livestream on Twitch dur­ing which I nar­rat­ed myself work­ing on just day-to-day main­te­nance tasks; label­ing issues, review­ing PRs, updat­ing doc­u­men­ta­tion, coor­di­nat­ing releas­es and so on. And I also com­mit­ted to lit­er­al­ly just ask­ing for more help. From friends, from stu­dents, in talks I gave, in Discord, on Twitter and so on. And I start­ed label­ing things like good first issues on our Github, and cre­at­ing project plans that I could actu­al­ly share with oth­er peo­ple who I was request­ing help from as well. 

I’ve recent­ly been meet­ing with and chat­ting with a lot of the new com­mu­ni­ty mem­bers who have an inter­est in help­ing main­tain the library, just to under­stand how I can sup­port them in find­ing areas of the ml5.js project and com­mu­ni­ty that they’d like to advance. And I’ve real­ly rede­fined my under­stand­ing of con­tri­bu­tion to the library from fix­ing all the issues, to help­ing cre­ate a com­mu­ni­ty that can improve the library togeth­er as a collaboration. 

And so even though we haven’t reached my ear­li­er goal of only hav­ing fifty open issues on our repos­i­to­ry, I fun­da­men­tal­ly feel a lot more excit­ed and engaged in the work and in this new way of con­tribut­ing to the project. I believe it deeply aligns with much more of the val­ues that we have set for the project. 

Anyways, I say all that to say that if you’re lis­ten­ing to this talk and you’re remote­ly inter­est­ed in con­tribut­ing to an open source cre­ative tool and com­mu­ni­ty, we would absolute­ly appre­ci­ate your help in what­ev­er form that takes. After the talk I’ll share links to our Discord serv­er in Zoom and in the YouTube chat as well. And I’d love to talk with you about maybe your inter­ests or some of the things that you think could be improved with­in the library or the com­mu­ni­ty, just to help you find what you’d like to shape. 

The sec­ond per­son­al reminder I have is that clear val­ues are real­ly crit­i­cal infra­struc­ture in any project, and I think espe­cial­ly in open source projects. For more than a year now, the team has real­ly been work­ing to under­stand a cen­tral ques­tion, which is essen­tial­ly like, how can we use the rules that gov­ern the ml5.js com­mu­ni­ty to encour­age friend­ly, cre­ative appli­ca­tions of machine learn­ing? And so one of the things that’s impor­tant to us is that we rec­og­nize this space of machine learn­ing is quite fraught. You know, there are a vari­ety of issues that are hap­pen­ing in this space, and I think machine learn­ing as we all know, or as many of us know, is a tool that can advance a lot of sig­nif­i­cant vio­lence to a vari­ety of com­mu­ni­ties that affect many of us who are con­trib­u­tors and peo­ple who are using also the library and the project.

Our Code of Conduct and software license 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.

And so what we’ve been work­ing on over the course of the last year or so is a code of con­duct that essen­tial­ly clar­i­fies our val­ues as a library and as a com­mu­ni­ty and a project. This is a screen­shot of the first ver­sion, which we shared a few months ago and has been under­go­ing a round of reviews from var­i­ous cre­ators and tech­nol­o­gists in the com­mu­ni­ty. We’ll be shar­ing an updat­ed ver­sion of this soon, but I just want­ed to quick­ly touch on some of the imme­di­ate ben­e­fits that I think start­ing to think about this has had for us. 

In gen­er­al it real­ly sets a stan­dard for how we con­duct our­selves in the library, and it’s forced me to ask ques­tions like okay, all of our doc­u­men­ta­tion right now is in English. How many peo­ple are we leav­ing out of the pic­ture, and what can we do mov­ing for­ward to change that? And I think while the code of con­duct is still new, I’ve per­son­al­ly under­stood that this process of kind of think­ing about our val­ues has real­ly great­ly influ­enced how I think about my own work and my pres­ence with­in the library and with­in the community. 

And last­ly I think it’s set us on a course as well about think­ing on how the work that we’re doing cre­ates rela­tion­ships with major tech­nol­o­gy com­pa­nies or enti­ties whose tech­nol­o­gy we’re using, and I think that this kind of ques­tion around how open source tech­nolo­gies strike up rela­tion­ships with vari­eties of enti­ties across this sort of tech­nol­o­gy land­scape is a ques­tion that we want to think about. For exam­ple, what would it mean for us to think about maybe sup­port­ing more mod­els that aren’t cre­at­ed by Google, and how might that help this library be more didac­tic in the ways that it can com­mu­ni­cate the space and span of this domain? 

Briefly I just want to share one final per­son­al reminder, and that’s that open source is real­ly a dura­tional prac­tice rather than a momen­tary one. And strong open source com­mu­ni­ties and tech­nolo­gies that enable them are prod­ucts of com­mit­ment and respon­si­bil­i­ty. Every con­tri­bu­tion that ml5.js has received is an instance of some­one tak­ing respon­si­bil­i­ty to share their time and ener­gy with the broad­er com­mu­ni­ty. And as a main­tain­er I believe we have a respon­si­bil­i­ty to hon­or those con­tri­bu­tions through our com­mit­ments to the future of the library, and most impor­tant­ly to the peo­ple who com­prise our open source com­mu­ni­ties. And in prac­tice I believe that this looks like writ­ing clear doc­u­men­ta­tion of our tools and ideas, or see­ing out our changes to the end, ask­ing for lots of help from the com­mu­ni­ty, and sup­port­ing all types of contributions. 

And even though this is a set of val­ues that I’ve held for a while, I’ve rec­og­nized that also think­ing about this, we real­ly need to dou­ble down on the fact that when I say like, open source is a dura­tional prac­tice rather than a momen­tary one, I also mean to say that open source, or at the least the open source that I aspire to be involved with, requires durable com­mu­ni­ties as well. And so these pri­or reminders about con­tri­bu­tion and about val­ues and codes of con­duct I think real­ly feed into this broad­er goal of cre­at­ing an open source com­mu­ni­ty that can exist as a healthy space for begin­ners to take their first steps in this domain.

Ten years from now I can’t promise that ml5.js or any giv­en open source project or library will be active­ly main­tained or even use­ful in the tech­nol­o­gy land­scape, but in the present I do believe that the deci­sions that we make about how we sup­port our open source com­mu­ni­ties, how we uphold val­ues with­in our open source com­mu­ni­ties, and about how we build up our col­lab­o­ra­tors will influ­ence deci­sions that peo­ple ten years from now make about how they bring new open source tech­nolo­gies into the world. And I think that that’s the effect that the ml5.js com­mu­ni­ty has had on me. That’s the effect that some of my peers here in the OSSTA res­i­den­cy have had on me. And I think through this res­i­den­cy I’ve real­ized that that’s the effect that I’d like for my open source efforts to have on oth­ers as well.

That’s it for me. Thanks all for listening. 


Golan Levin: Bomani, thank you so much for shar­ing that with us. I use ml5 of course with my stu­dents. And I think it’s… I see this again and again in the pre­sen­ta­tions from the OSSTA res­i­den­cy group that con­tri­bu­tions are not just writ­ing code but also man­ag­ing a com­mu­ni­ty. What I see com­ing out of your pre­sen­ta­tion is this amaz­ing sen­tence you had that val­ues are crit­i­cal infra­struc­ture. You know, that tools have pol­i­tics, and I think when one is mess­ing around” with machine learn­ing, that pol­i­tics is real­ly you know, on your sleeve. Because these tools as you point out can be used to cre­ate great harm, and these tools are very fraught. So rec­og­niz­ing the pol­i­tics of the tools you’re work­ing on and the ways in which the val­ues you’re embed­ding in them are crit­i­cal to the infra­struc­ture both in terms of how peo­ple use it and how the com­mu­ni­ty wants to par­tic­i­pate in it is real­ly incredible. 

Could you give maybe a quick exam­ple or two from the codes of con­duct and the license you’re cre­at­ing that you think kind of embed some of these val­ues in particular? 

Bomani Oseni McClendon: Yeah, I mean I think that one of the things that we have been dis­cussing a lot is just our focus on the beginner-friendliness aspects. And I’ve rec­og­nized that that has come up a lot in deci­sions that I’ve made as a soft­ware main­tain­er for exam­ple. We fre­quent­ly receive requests to switch the entire library to TypeScript, for exam­ple, or to change some par­tic­u­lar pat­tern about how we make things with­in the project. And I think that we’ve actu­al­ly held off on a lot of those things because we are real­ly real­ly com­mit­ted to this par­tic­u­lar expe­ri­ence of peo­ple who are not experts, who are not you know, full-time pro­fes­sion­al coders being able to like, come into this project and under­stand it from a per­spec­tive of usage but also to under­stand it behind the scenes, to be able to go and poten­tial­ly read the code and glean some insights from it as well. So I think that’s just one of many exam­ples where I’ve noticed that come up a lot in my day-to-day decisionmaking.