SlideShare una empresa de Scribd logo
1 de 45
Morality of Code
Glen R. Goodwin - SAS Institute, inc.
Morality of Code
Glen R. Goodwin
Distinguished Software Engineer and
Chief Architect for Cyber Security R&D
SAS Institute, Inc.
Morality of Code
{ … }
{100110101110000010110101001
0110011101001100010101011001
0101101110001111000000000000
0111110101110010200101010101
1010101111010010001011000011
010010011101011010101111000}
function commandRobot(command) {
let parsed = parseCommand(command);
return executeCommand(parsed);
}
commandRobot(“make sandwich”);
function commandRobot(command) {
let parsed = parseCommand(command);
return executeCommand(parsed);
}
commandRobot(“make sandwich”);
commandRobot(“kill all humans”);
Morality of code is
about understanding the
moral consequences of
what happens when someone
executes or reads
our code.
"I suspect that many of you see no real
connection between social, political, and
ethical values and what you work on. You
don’t build bombs, experiment on people, or
destroy the environment. You don’t spy on
populations. You hack math and write papers.
This doesn’t sound ethically laden. I want to
show you that it is."
- Dr. Phillip Rogaway
http://web.cs.ucdavis.edu/~rogaway/papers/moral-fn.pdf
"I suspect that many of you see no real
connection between social, political, and
ethical values and what you work on. You
don’t build bombs, experiment on people, or
destroy the environment. You don’t spy on
populations. You hack math and write papers.
This doesn’t sound ethically laden. I want to
show you that it is."
- Dr. Phillip Rogaway
http://web.cs.ucdavis.edu/~rogaway/papers/moral-fn.pdf
Cause pain
Spread hate
Induce fear
Oppress others
Because considering the
moral consequences of things
is hard.
It takes work
and it takes courage.
"i'm just writing code here.
I'm not responsible for what
people do with it."
"Nobody would ever use my
code like that"
"If I didn't write it
someone else would."
"my stuff isn't harming
anyone"
Steal
Harass
Bully
Oppress
This is all good and well
until you find out something
you wrote is killing people.
“I think it’s safe to say that
every tool we create has the
potential to be used as a
vehicle for harassment.”
http://negativitysandwiches.com/post/147953585530/i-wrote-a-
blog-about-building-things-that-are-then
We are allowing, permitting,
encouraging even, our code
to be used in ways that we
as individuals and as a
community may find
reprehensible.
How do we ensure our
code is used in a
morally responsible way?
A moral and ethical manner
that is consistent with
ours.
Question 1.
What are my moral intents as
the author of this code?
Question 2.
What are my users going to
do with this code?
Question 3.
What are my obligations to
those who suffer the effects
of my code?
Question 4.
What are my responsibilities
for what people do with this
code?
1. What are my moral intents as the author of
this code?
2. What are my users going to do with this
code?
3. What are my obligations to those whom
suffer the effects of my code?
4. What are my responsibilities for what
people do with this code?
Not writing it in the first
place.
Sam Harris: “Can we build A.I.
without losing control over
it.”
https://www.samharris.org/blog/item/ted-talk-can-we-build-ai-without-
losing-control-over-it
Consider not releasing
everything.
Build in safe guards.
Explain your intent.
"if you create something that is used
other than your initial intentions, you
are responsible to make it clear what
your artist statement is or what the
lesson you are trying to teach is. and
that’s not even the absolute minimum of
your responsibility, in my opinion."
- Jenn Schiffer
http://negativitysandwiches.com/post/147953585530/i-wrote-a-blog-about-
building-things-that-are-then
The intent of this code ‘npmbox’ is to
provide a tool for the bundling of npm
packages and their dependencies into a
single tar file for transport and
installation later, possibly in an offline
or un-networked system.
Any usage outside of this behavior is
strictly against the author’s intent and a
violation of the terms of usage.
Limiting Usage through
Licensing.
Copyright (c) 2016 YOUR NAME GOES HERE.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
... copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
<INSERT ADDITIONAL CONDITIONS HERE>
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
... copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
Use of this software for criminal purposes
or to harass any individual for any reason
is strictly prohibited.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
... copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
Use of this software is strictly
prohibited by any military or government
intelligence agency or any contractor
acting on the behalf of a military or
government intelligence agency.
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
> tail conf.notes.txt
A moral responsibility to
examine our code to ensure
it is used in a manner
morally consistent with our
intended usage.
Glen R. Goodwin
SAS Institute, inc.
https://arei.net
https://twitter.com/areinet
https://github.com/arei
Glen R. Goodwin
SAS Institute, Inc.
https://arei.net
https://twitter.com/areinet
https://github.com/arei
Thank You!
Field Guide to United States Intellectual Property
https://fieldguide.kemitchell.com/
MIT License Line by Line
https://writing.kemitchell.com/2016/09/21/MIT-License-
Line-by-Line.html

Más contenido relacionado

Similar a The Morality of Code - Glen Goodwin, SAS Institute, inc.

Similar a The Morality of Code - Glen Goodwin, SAS Institute, inc. (20)

hamza xp
hamza xphamza xp
hamza xp
 
Licenses
LicensesLicenses
Licenses
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Avisos legales
Avisos legalesAvisos legales
Avisos legales
 
ECCS V1.0 Student Hand Book
ECCS V1.0 Student Hand BookECCS V1.0 Student Hand Book
ECCS V1.0 Student Hand Book
 
ECCS Student Admission Hand Book
ECCS Student Admission Hand BookECCS Student Admission Hand Book
ECCS Student Admission Hand Book
 
ECCS v2.0 Student Admission Hand Book
ECCS v2.0 Student Admission Hand BookECCS v2.0 Student Admission Hand Book
ECCS v2.0 Student Admission Hand Book
 
LegalNotices.pdf
LegalNotices.pdfLegalNotices.pdf
LegalNotices.pdf
 
Legal notices
Legal noticesLegal notices
Legal notices
 
Adobe products eula(2)
Adobe products eula(2)Adobe products eula(2)
Adobe products eula(2)
 
Adobe products eula(1)
Adobe products eula(1)Adobe products eula(1)
Adobe products eula(1)
 
Adobe products eula
Adobe products eulaAdobe products eula
Adobe products eula
 
Hrms83xto890
Hrms83xto890Hrms83xto890
Hrms83xto890
 
Hcm 8.9 Setup Manager
Hcm 8.9 Setup ManagerHcm 8.9 Setup Manager
Hcm 8.9 Setup Manager
 
The Secret Of Hacking Trial Pages
The Secret Of Hacking   Trial PagesThe Secret Of Hacking   Trial Pages
The Secret Of Hacking Trial Pages
 

Más de NodejsFoundation

Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0
Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0
Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0NodejsFoundation
 
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...NodejsFoundation
 
Node's Event Loop From the Inside Out - Sam Roberts, IBM
Node's Event Loop From the Inside Out - Sam Roberts, IBMNode's Event Loop From the Inside Out - Sam Roberts, IBM
Node's Event Loop From the Inside Out - Sam Roberts, IBMNodejsFoundation
 
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, Bustle
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, BustleHitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, Bustle
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, BustleNodejsFoundation
 
Nodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodejsFoundation
 
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...NodejsFoundation
 
Take Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksTake Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksNodejsFoundation
 
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...NodejsFoundation
 
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...NodejsFoundation
 
Developing Nirvana - Corey A. Butler, Author.io
Developing Nirvana - Corey A. Butler, Author.ioDeveloping Nirvana - Corey A. Butler, Author.io
Developing Nirvana - Corey A. Butler, Author.ioNodejsFoundation
 
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...NodejsFoundation
 
Express State of the Union at Nodejs Interactive EU- Doug Wilson
Express State of the Union at Nodejs Interactive EU- Doug WilsonExpress State of the Union at Nodejs Interactive EU- Doug Wilson
Express State of the Union at Nodejs Interactive EU- Doug WilsonNodejsFoundation
 
State of the CLI- Kat Marchan
State of the CLI- Kat MarchanState of the CLI- Kat Marchan
State of the CLI- Kat MarchanNodejsFoundation
 
Node.js Core State of the Union- James Snell
Node.js Core State of the Union- James SnellNode.js Core State of the Union- James Snell
Node.js Core State of the Union- James SnellNodejsFoundation
 
Building Scalable Web Applications Using Microservices Architecture and NodeJ...
Building Scalable Web Applications Using Microservices Architecture and NodeJ...Building Scalable Web Applications Using Microservices Architecture and NodeJ...
Building Scalable Web Applications Using Microservices Architecture and NodeJ...NodejsFoundation
 
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon University
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon UniversityText Mining with Node.js - Philipp Burckhardt, Carnegie Mellon University
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon UniversityNodejsFoundation
 
Take Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksTake Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksNodejsFoundation
 
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...NodejsFoundation
 
Breaking Down the Monolith - Peter Marton, RisingStack
Breaking Down the Monolith - Peter Marton, RisingStackBreaking Down the Monolith - Peter Marton, RisingStack
Breaking Down the Monolith - Peter Marton, RisingStackNodejsFoundation
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.jsNodejsFoundation
 

Más de NodejsFoundation (20)

Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0
Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0
Real-Life Node.js Troubleshooting - Damian Schenkelman, Auth0
 
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...
Real-Time Machine Learning with Node.js - Philipp Burckhardt, Carnegie Mellon...
 
Node's Event Loop From the Inside Out - Sam Roberts, IBM
Node's Event Loop From the Inside Out - Sam Roberts, IBMNode's Event Loop From the Inside Out - Sam Roberts, IBM
Node's Event Loop From the Inside Out - Sam Roberts, IBM
 
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, Bustle
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, BustleHitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, Bustle
Hitchhiker's Guide to"'Serverless" Javascript - Steven Faulkner, Bustle
 
Nodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEWNodifying the Enterprise - Prince Soni, TO THE NEW
Nodifying the Enterprise - Prince Soni, TO THE NEW
 
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...
Workshop: Science Meets Industry: Online Behavioral Experiments with nodeGame...
 
Take Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksTake Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorks
 
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...
Multimodal Interactions & JS: The What, The Why and The How - Diego Paez, Des...
 
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
 
Developing Nirvana - Corey A. Butler, Author.io
Developing Nirvana - Corey A. Butler, Author.ioDeveloping Nirvana - Corey A. Butler, Author.io
Developing Nirvana - Corey A. Butler, Author.io
 
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
Are your v8 garbage collection logs speaking to you?Joyee Cheung -Alibaba Clo...
 
Express State of the Union at Nodejs Interactive EU- Doug Wilson
Express State of the Union at Nodejs Interactive EU- Doug WilsonExpress State of the Union at Nodejs Interactive EU- Doug Wilson
Express State of the Union at Nodejs Interactive EU- Doug Wilson
 
State of the CLI- Kat Marchan
State of the CLI- Kat MarchanState of the CLI- Kat Marchan
State of the CLI- Kat Marchan
 
Node.js Core State of the Union- James Snell
Node.js Core State of the Union- James SnellNode.js Core State of the Union- James Snell
Node.js Core State of the Union- James Snell
 
Building Scalable Web Applications Using Microservices Architecture and NodeJ...
Building Scalable Web Applications Using Microservices Architecture and NodeJ...Building Scalable Web Applications Using Microservices Architecture and NodeJ...
Building Scalable Web Applications Using Microservices Architecture and NodeJ...
 
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon University
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon UniversityText Mining with Node.js - Philipp Burckhardt, Carnegie Mellon University
Text Mining with Node.js - Philipp Burckhardt, Carnegie Mellon University
 
Take Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorksTake Data Validation Seriously - Paul Milham, WildWorks
Take Data Validation Seriously - Paul Milham, WildWorks
 
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
From Pterodactyls and Cactus to Artificial Intelligence - Ivan Seidel Gomes, ...
 
Breaking Down the Monolith - Peter Marton, RisingStack
Breaking Down the Monolith - Peter Marton, RisingStackBreaking Down the Monolith - Peter Marton, RisingStack
Breaking Down the Monolith - Peter Marton, RisingStack
 
The Enterprise Case for Node.js
The Enterprise Case for Node.jsThe Enterprise Case for Node.js
The Enterprise Case for Node.js
 

Último

2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Último (20)

2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

The Morality of Code - Glen Goodwin, SAS Institute, inc.

  • 1.
  • 2. Morality of Code Glen R. Goodwin - SAS Institute, inc.
  • 3. Morality of Code Glen R. Goodwin Distinguished Software Engineer and Chief Architect for Cyber Security R&D SAS Institute, Inc.
  • 7. function commandRobot(command) { let parsed = parseCommand(command); return executeCommand(parsed); } commandRobot(“make sandwich”);
  • 8. function commandRobot(command) { let parsed = parseCommand(command); return executeCommand(parsed); } commandRobot(“make sandwich”); commandRobot(“kill all humans”);
  • 9. Morality of code is about understanding the moral consequences of what happens when someone executes or reads our code.
  • 10. "I suspect that many of you see no real connection between social, political, and ethical values and what you work on. You don’t build bombs, experiment on people, or destroy the environment. You don’t spy on populations. You hack math and write papers. This doesn’t sound ethically laden. I want to show you that it is." - Dr. Phillip Rogaway http://web.cs.ucdavis.edu/~rogaway/papers/moral-fn.pdf
  • 11. "I suspect that many of you see no real connection between social, political, and ethical values and what you work on. You don’t build bombs, experiment on people, or destroy the environment. You don’t spy on populations. You hack math and write papers. This doesn’t sound ethically laden. I want to show you that it is." - Dr. Phillip Rogaway http://web.cs.ucdavis.edu/~rogaway/papers/moral-fn.pdf
  • 12. Cause pain Spread hate Induce fear Oppress others
  • 13. Because considering the moral consequences of things is hard. It takes work and it takes courage.
  • 14. "i'm just writing code here. I'm not responsible for what people do with it."
  • 15. "Nobody would ever use my code like that"
  • 16. "If I didn't write it someone else would."
  • 17. "my stuff isn't harming anyone"
  • 19. This is all good and well until you find out something you wrote is killing people.
  • 20. “I think it’s safe to say that every tool we create has the potential to be used as a vehicle for harassment.” http://negativitysandwiches.com/post/147953585530/i-wrote-a- blog-about-building-things-that-are-then
  • 21. We are allowing, permitting, encouraging even, our code to be used in ways that we as individuals and as a community may find reprehensible.
  • 22. How do we ensure our code is used in a morally responsible way?
  • 23. A moral and ethical manner that is consistent with ours.
  • 24. Question 1. What are my moral intents as the author of this code?
  • 25. Question 2. What are my users going to do with this code?
  • 26. Question 3. What are my obligations to those who suffer the effects of my code?
  • 27. Question 4. What are my responsibilities for what people do with this code?
  • 28. 1. What are my moral intents as the author of this code? 2. What are my users going to do with this code? 3. What are my obligations to those whom suffer the effects of my code? 4. What are my responsibilities for what people do with this code?
  • 29. Not writing it in the first place.
  • 30. Sam Harris: “Can we build A.I. without losing control over it.” https://www.samharris.org/blog/item/ted-talk-can-we-build-ai-without- losing-control-over-it
  • 32. Build in safe guards.
  • 34. "if you create something that is used other than your initial intentions, you are responsible to make it clear what your artist statement is or what the lesson you are trying to teach is. and that’s not even the absolute minimum of your responsibility, in my opinion." - Jenn Schiffer http://negativitysandwiches.com/post/147953585530/i-wrote-a-blog-about- building-things-that-are-then
  • 35. The intent of this code ‘npmbox’ is to provide a tool for the bundling of npm packages and their dependencies into a single tar file for transport and installation later, possibly in an offline or un-networked system. Any usage outside of this behavior is strictly against the author’s intent and a violation of the terms of usage.
  • 37. Copyright (c) 2016 YOUR NAME GOES HERE. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • 38. ... copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: <INSERT ADDITIONAL CONDITIONS HERE> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • 39. ... copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Use of this software for criminal purposes or to harass any individual for any reason is strictly prohibited. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • 40. ... copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Use of this software is strictly prohibited by any military or government intelligence agency or any contractor acting on the behalf of a military or government intelligence agency. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  • 42. A moral responsibility to examine our code to ensure it is used in a manner morally consistent with our intended usage.
  • 43. Glen R. Goodwin SAS Institute, inc. https://arei.net https://twitter.com/areinet https://github.com/arei
  • 44. Glen R. Goodwin SAS Institute, Inc. https://arei.net https://twitter.com/areinet https://github.com/arei Thank You!
  • 45. Field Guide to United States Intellectual Property https://fieldguide.kemitchell.com/ MIT License Line by Line https://writing.kemitchell.com/2016/09/21/MIT-License- Line-by-Line.html

Notas del editor

  1. Hello. My name is Glen. There’s a bunch of info up on this slide about my title and company But ultimate, none of it really matters, who I am doesn’t really matter. Instead, what really matters, at least to me and hopefully to you as well by the end of this talk, Is the morality of code. NEXT: And before we go any further I want to be clear that I'm not here to lecture about my moral opinions or tell anyone what their moral opinions should be.
  2. And before we go any further I want to be clear that I'm not here to lecture about my moral opinions or tell anyone what their moral opinions should be. Instead I'm here to talk about the idea that we, as software engineers, need to take the time to consider our moral opinions, whatever they may be, before and after we write our code. My goal isn't to tell you what to do, but to help you find the way to make your own moral decisions regarding your code. Okay, So what do I mean when I say morality of code.  NEXT: That is to say, what morality does a block of code have?
  3. That is to say, what morality does a block of code have? Of course you might say, code has no morality, it's not human. Its incapable of morality It's just bits. NEXT: And I agree with you.
  4. And I agree with you. Bits are not the problem, It's what you do with the bits. Morality of code isn't about whether or not the bits in and of themselves are moral.  NEXT: Instead it's about how those bits are used.
  5. Instead it's about how those bits are used. It's about what our intent is in aligning those bits into certain patterns. It's about understanding what happens when other people consume our code. NEXT: And how our own personal morality shapes the code itself.
  6. And how our own personal morality shapes the code itself. [pause] So here is the starting definition I suggest we use... NEXT: Morality of code is about understanding the moral consequences of what happens when someone executes or reads our code.
  7. Morality of code is about understanding the moral consequences of what happens when someone executes or reads our code. [pause] NEXT: There is a paper in the Crytographic Community
  8. There is a paper in the Crytographic Community entitled “The Moral Character of Cryptographic Work” That I think applies equally as well here. The author, Dr. Rogaway, wrote NEXT: “I suspect that many of you see no real connection between social, political, and ethical values and what you work on.”
  9. “I suspect that many of you see no real connection between social, political, and ethical values and what you work on.” And he’s right. Most of us never really even think about this stuff. We never consider the moral consequences of the code we are writing. We never ask ourselves can this code be used to  NEXT: Cause Pain, Spread Hate, Induce Feat, or Oppress other
  10. Cause Pain Spread Hate Induce Fear or Oppress others We never ask ourselves these questions NEXT: Because considering the moral consequences of things is hard.
  11. Because considering the moral consequences of things is hard. It takes work and it takes courage. In fact, instead of confronting these topics we come up with some convenient shortcuts, lies if you will, that we tell ourselves and others that enable us to avoid facing this subject. Things like… NEXT: "i'm just writing code here.  I'm not responsible for what people do with it.“
  12. "i'm just writing code here.  I'm not responsible for what people do with it.“ NEXT: "Nobody would ever use my code like that“
  13. "Nobody would ever use my code like that“ NEXT: "If I didn't write it someone else would.“
  14. "If I didn't write it someone else would.“ These little platitudes let us sidestep the moral considerations of what we do. But the little white lie we most commonly tell ourselves is this one… NEXT: "my stuff isn't harming anyone“
  15. "my stuff isn't harming anyone“ Listen, we all want to believe that our code is just code and we put it out there into the universe and it is only used to make sunshine and rainbows. Except the reality is that our code is out there For anyone to use To do whatever they want. NEXT: To Steal, To Harass, To Bully, To oppress…
  16. To Steal To Harass To Bully To oppress… Tell me a group that you are morally opposed to and I bet I can show you an example of them using common tools. I went to the website of the literally the first hate group I could think of, and I’m intentionally not naming names here, and I found that they were using wordpress… They were using jquery… They were using Google Analytics… They all use the same coding tools we use, the same languages, the same package managers, the same libraries. But something deep inside of us wants to brush this off, ignore it and pretend it doesn’t exist. NEXT: This is all good and well until you find out something you wrote is killing people.
  17. This is all good and well until you find out something you wrote is killing people. [pause] I'm sure that sounds a little overly dramatic to some of you. You might feel like I am playing this up a bit. But realize that this is just your brain trying to avoid thinking about this subject Because this is hard stuff. And ultimately nobody wants to believe that we are participants in other people suffering. NEXT: Infamous JavaScript community satirist, Jenn Schiffer recently talked about this in a blog post she wrote…
  18. Infamous JavaScript community satirist, Jenn Schiffer recently talked about this in a blog post she wrote… “I think it’s safe to say that every tool we create has the potential to be used as a vehicle for harassment.” [pause] once you share your code for others to use, whether commercially or open source, there is no limit to what other people can do with it. And by not weighing the moral consequences of our work we are allowing, NEXT: Permitting, encouraging even, our code to be used in ways that we as individuals and as a community may find reprehensible. 
  19. Permitting, encouraging even, our code to be used in ways that we as individuals and as a community may find reprehensible.  We cannot rely on the users of our code to be doing the right thing, however we define that. Therefore we must take steps to try and ensure that they aren’t doing the wrong thing. [pause] So how do we do that? NEXT: How do we ensure our code is used in a morally responsible way?
  20. How do we ensure our code is used in a morally responsible way? Let’s start by looking at what we mean by “morally responsible”. [Pause] To me morally responsible means in alignment with my moral and ethical opinions. Of course, Your moral and ethical opinions are different than mine. each of us comes with our own morality. To be morally responsible, means to act in a manner consistent with our opinions.  What we want is for the users of our code to behave in a moral and ethical manner that is consistent with ours. NEXT: This the expectation we have when we release our code into the wild.
  21. This the expectation we have when we release our code into the wild. That our code is being used in a morally consistent manner to our own and not contrary to it. To use our code otherwise would be to use it in a morally irresponsible fashion. This is what we mean by morally responsible. [pause] Now, with that in mind we can begin to examine our code To understand the moral opinions within the code… I propose you do this by asking yourself four questions... NEXT: Question 1: What are my moral intents as the author of this code?
  22. Question 1: What are my moral intents as the author of this code? That is to say, what morality am I bringing to the code itself.  If I were to write a program, for example, for engaging a distributed denial of service attack my reasons for writing it may have moral implications.   Am I writing it for testing how resilient my servers are?  Or am I writing it to get back at someone I'm angry at. This is my moral intent, my moral purpose in writing the code [pause] Second... What are my users going to do with this code? NEXT: In order to understand the moral implications of what your users do with your code...
  23. In order to understand the moral implications of your code... you first need to understand what can be done with your code. So challenge yourself to imagine all the possible scenarios, all the ways your code can be used. For good and for evil… This kind of thought experiment might be hard, it might take a while. It might be really easy. I think it depends largely on the scope of what you are writing. And the audacity of the idea you are trying to implement. Once you understand what can be done with your code, you can ask yourself the third question... What are my obligations to those who suffer the effects of my code? NEXT: See, the users of your code are not really who you need to worry about.
  24. See, the users of your code are not really who you need to worry about. If I write a twitter bot library that just replies to tweets, It is the user of the library who decides how to direct the twitter bot. The user of the library is not the target of the library.  The target is whomever that twitter bot is aimed at... the recipients of your code are those who suffer the consequence of it. So how do you feel about the people being targeted by your code, can you empathize with them? Are they being wronged? Once you know how you feel about these people, you can ask yourself the final question... What are my responsibilities for what people do with this code? NEXT: Both morally and legally.
  25. Both morally and legally. Do I have a moral obligation to protect them from using My code to hurt or to harm or to shame or to harass? Do I have a legal obligation? How do I protect myself, and much more importantly, How do I protect others? NEXT: I believe by examining our code through the lens of these four questions
  26. I believe by examining our code through the lens of these four questions Helps me, helps us, understand the moral impact our code can have on other people. And once you understand that, you can begin to think about how to manage it. [pause] So here are some thoughts on how you can manage how others use your code… And this is not an exhaustive list, just some options for you to consider. For example… NEXT: Consider… Not writing it in the first place.
  27. Not writing it in the first place. Now, I'm not advocating we all stop writing code. But maybe for some things, maybe it's better if they are never written at all. All I’m asking is that before you write it, think about whether or not is should be written In 2016 futurist Sam Harris Gave a TED talk entitled: Can We Build AI without Losing Control over it. NEXT: In it, he argues not that we don’t try to build AI,
  28. In it, he argues not that we don’t try to build AI, but that we first must develop the ethical and moral understanding necessary to do it safely. Maybe that's the responsible thing to do here. Don’t give up, but first understand the moral impact of what we are doing And ask yourself is this right or is this wrong. Now, if you absolutely must write it... NEXT: Consider not releasing everything.
  29. Consider not releasing everything. Again, don’t get me wrong, I love the open source movement. I participate in it just like everyone else here does. But maybe we don't need to release every little thing we write to github. Maybe some times we need to keep some code to ourselves. It falls to us to be the gatekeepers that prevent bad, harmful, malicious code From being exposed to the greater world. [pause] Of course, if you really have your heart set on sharing... NEXT: Build in safe guards.
  30. Build in safe guards. Write code around your code that actively works to prevent the usage you deem inappropriate. Of course, we know that anything can be circumvented and in JavaScript code is easy to edit and disable. But again, at least you are trying to be responsible.  And your safeguards force others to actively be irresponsible. It's like locking your car doors. It won't really prevent someone from stealing something out of your car if they really want it. But it does make them have to work ever so slightly harder at it. It's the keeping honest people honest philosophy. And it works for code as well. [pause] Regardless of whether or not you do build in safe guards, I encourage everyone to... NEXT: Explain your intent.
  31. Explain your intent. For every project, Write a mission statement explaining why you wrote the code, your intended usage, and discouraging usage you disagree with.  Another Jenn Schiffer quote… NEXT: “if you create something that is used other than your initial intentions, you are responsible to make it clear what your artist statement is or what the lesson you are trying to teach is. “
  32. “if you create something that is used other than your initial intentions, you are responsible to make it clear what your artist statement is or what the lesson you are trying to teach is. “ This could be as simple as adding a top level README.md or LICENSE.txt files. A USAGE_STATEMENT.txt if you will Here's an example for a small project that I maintain. NEXT: The cost of adding a USAGE_STATEMENT file to your repos is very low.
  33. The USAGE_STATEMENT can be as simple or as detailed as you want, So long as it includes your purpose for writing the project, And any usage that you would deem inappropriate. And the cost of adding such a USAGE_STATEMENT file to your projects is very low. So it’s low risk, low effort, but has a vast upside. [pause] Finally before you release anything, consider... NEXT: Limit Usage Through Licensing
  34. Limit Usage Through Licensing One of the major things we control in our projects is the license that gives our users certain permissions on how, when, and where they can execute our code. As you may know, a license is a grant of specific rights under specific conditions. The right to use, copy, distribute, sell, make derivative works, etc. are all scoped in a license. So why not use that license To specifically deny usages that you want to prevent. Here is the MIT license NEXT: It would be very simple to just stick a condition in here
  35. It would be very simple to just stick a condition in here NEXT: That reads something like…
  36. That reads something like… NEXT: Use of this software for criminal purposes or to harass any individual for any reason is strictly prohibited.
  37. Use of this software for criminal purposes or to harass any individual for any reason is strictly prohibited. Or another variation that is a personal favorite of mine… NEXT: Use of this software is strictly prohibited by any military or government intelligence agency or any contractor acting on the behalf of a military or government intelligence agency.
  38. Use of this software is strictly prohibited by any military or government intelligence agency or any contractor acting on the behalf of a military or government intelligence agency. But there’s a catch to this… open source software means open to everyone. Prohibiting a group or class of people is against the motives of the open source movement.  And by limiting your licenses in such a manner, you are violating the openness of it. Also, modifying well know licenses may not be compatible with the license itself. You will need to do some homework here You will need to find the license that best suits your project, And how it can be modified to limit Against the kind of usage you deem Moral irresponsible. [pause] NEXT: So that’s it. In closing, let me break the rule I mentioned in the beginning about how I'm not trying to impose my moral opinions on anyone.
  39. In closing, let me break the rule I mentioned in the beginning about how I'm not trying to impose my moral opinions on anyone. I'm going to give you one moral opinion of mine… NEXT: I believe we have a moral responsibility to examine our code to ensure that it is being used in a fashion that is morally consistent with our intended design.
  40. I believe we have a moral responsibility to examine our code to ensure that it is being used in a fashion that is morally consistent with our intended design. We achieve this by examining our intent The intent of our users The target of our users And our responsibilities to those targets. And it is through the answers to these questions that we understand how our code effects others and what we can do to ensure a better world. [Pause] NEXT: My name is Glen Goodwin.
  41. My name is Glen Goodwin. I work for SAS Institue. You can find me at these places on the internet. And… I hope I’ve given you a little bit to think about And That in the future you will take the time to consider the moral consequences of the code that you write. Thank you.
  42. END