284 lines
6.4 KiB
Elm
284 lines
6.4 KiB
Elm
module Modules exposing
|
|
( Module
|
|
, all_modules
|
|
, build_license
|
|
, download_license
|
|
, DownloadType(..)
|
|
, ModuleInfo
|
|
, module_info
|
|
, module_property
|
|
, module_desc
|
|
, module_sorter
|
|
)
|
|
|
|
import Html exposing (Html, text, a)
|
|
import Html.Attributes exposing (href)
|
|
import Sort exposing (Sorter)
|
|
import File.Download as Download
|
|
|
|
type Module
|
|
= CarbonUnderground
|
|
| Ecocide
|
|
| Extractive
|
|
| BDS
|
|
| Taliban
|
|
| Myanmar
|
|
| XinjiangUygar
|
|
| UsTariff
|
|
| Surveillance
|
|
| Military
|
|
| LawEnforcement
|
|
| Media
|
|
| SocialAuditing
|
|
| BoardOfDirectors
|
|
| SupplyChain
|
|
| Copyleft
|
|
|
|
all_modules : List Module
|
|
all_modules =
|
|
[ CarbonUnderground
|
|
, Ecocide
|
|
, Extractive
|
|
, BDS
|
|
, Taliban
|
|
, Myanmar
|
|
, XinjiangUygar
|
|
, UsTariff
|
|
, Surveillance
|
|
, Military
|
|
, LawEnforcement
|
|
, Media
|
|
, SocialAuditing
|
|
, BoardOfDirectors
|
|
, SupplyChain
|
|
, Copyleft
|
|
]
|
|
|
|
type alias ModuleInfo =
|
|
{ name: String
|
|
, desc: List (Html Never)
|
|
, index: Int
|
|
}
|
|
|
|
module_info : Module -> ModuleInfo
|
|
module_info mod = case mod of
|
|
CarbonUnderground ->
|
|
{ name = "Carbon Underground 200"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by the top global publicly-owned coal, oil, and gas reserve (judged
|
|
by
|
|
"""
|
|
, a
|
|
[ href "https://www.ffisolutions.com/research-analytics-index-solutions/research-screening/the-carbon-underground-200/"
|
|
]
|
|
[ text "the FFI Carbon Underground 200)" ]
|
|
]
|
|
, index = 0
|
|
}
|
|
Ecocide ->
|
|
{ name = "Ecocide"
|
|
, desc = [text "Disallow anyone who knowingly commits widespread or long term ecocide"]
|
|
, index = 1
|
|
}
|
|
Extractive ->
|
|
{ name = "Extractive Industries"
|
|
, desc =
|
|
[text
|
|
"""
|
|
Disallow use by anyone involved in fossil fuel / mineral exploitation,
|
|
extraction, development, and sale
|
|
"""
|
|
]
|
|
, index = 2
|
|
}
|
|
BDS ->
|
|
{ name = "BDS (Boycott, Divestment, Sanctions)"
|
|
, desc =
|
|
[ text "Disallow use by anyone on the "
|
|
, a
|
|
[ href "https://bdsmovement.net/" ]
|
|
[ text "Boycott, Divestment, Sanctions'" ]
|
|
, text "list"
|
|
]
|
|
, index = 3
|
|
}
|
|
Taliban ->
|
|
{ name = "Taliban"
|
|
, desc = [text "Disallow use by anyone who trades with, works with, or is the Taliban"]
|
|
, index = 4
|
|
}
|
|
Myanmar ->
|
|
{ name = "Myanmar"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who trades with, works with, or is the Myanmar/Burmese
|
|
military
|
|
"""
|
|
]
|
|
, index = 5
|
|
}
|
|
XinjiangUygar ->
|
|
{ name = "Xinjiang Uygur Autonomous Region"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who works with or is someone who benefits from goods
|
|
produced in the Xinjiang Uygur Autonomous Region of China
|
|
"""
|
|
]
|
|
, index = 6
|
|
}
|
|
UsTariff ->
|
|
{ name = "U.S. Tariff Act"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who works with or is someone who the U.S. Customs and
|
|
Border Protection believes uses forced labor
|
|
"""
|
|
]
|
|
, index = 7
|
|
}
|
|
Surveillance ->
|
|
{ name = "Mass Surveillance"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who works with or is a goverment/multinational corporation
|
|
who participates in a mass-surveilence program
|
|
"""
|
|
]
|
|
, index = 8
|
|
}
|
|
Military ->
|
|
{ name = "Military Activities"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who works with or is a goverment/multinational corporation
|
|
who conducts military activities
|
|
"""
|
|
]
|
|
, index = 9
|
|
}
|
|
LawEnforcement ->
|
|
{ name = "Law Enforcement"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who works with or anyone who trades with or offers support
|
|
to local, state, or federal law enforcement
|
|
"""
|
|
]
|
|
, index = 10
|
|
}
|
|
Media ->
|
|
{ name = "Media"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Disallow use by anyone who is or works with someone who broadcasts messages
|
|
promoting violence
|
|
"""
|
|
]
|
|
, index = 11
|
|
}
|
|
SocialAuditing ->
|
|
{ name = "Social Auditing"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Require that organizations that use your software only use social auditing methods
|
|
that adhere to the principles of the
|
|
"""
|
|
, a
|
|
[ href "https://wsr-network.org/what-is-wsr/statement-of-principles/" ]
|
|
[ text "Worker-Driven Social Responsibility Network," ]
|
|
, text
|
|
"""
|
|
or not use social auditing methods at all
|
|
"""
|
|
]
|
|
, index = 12
|
|
}
|
|
BoardOfDirectors ->
|
|
{ name = "Workers on Board of Directors"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
If the organization using your software has a board of directors, require that
|
|
they have at least 30% of the seats on the board be paid less than twice the
|
|
amount of the the lowest paid worker in the organization
|
|
"""
|
|
]
|
|
, index = 13
|
|
}
|
|
SupplyChain ->
|
|
{ name = "Supply Chain Transparency"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Require that whoever uses your software must publish information about their
|
|
supply chain on a public website
|
|
"""
|
|
]
|
|
, index = 14
|
|
}
|
|
Copyleft ->
|
|
{ name = "Copyleft"
|
|
, desc =
|
|
[ text
|
|
"""
|
|
Require that any modifications or derivitive works based on your software or
|
|
source code be licensed under the exact same license
|
|
"""
|
|
]
|
|
, index = 15
|
|
}
|
|
|
|
module_property : (ModuleInfo -> a) -> Module -> a
|
|
module_property adapter mod = adapter (module_info mod)
|
|
|
|
module_desc : Module -> List (Html a)
|
|
module_desc mod =
|
|
module_property .desc mod
|
|
|> List.map (Html.map never)
|
|
|
|
module_sorter : Sorter Module
|
|
module_sorter = Sort.by (module_property .index) Sort.increasing
|
|
|
|
-- License Building
|
|
|
|
type DownloadType
|
|
= Plain
|
|
| Markdown
|
|
| Html
|
|
|
|
download_mime : DownloadType -> String
|
|
download_mime dtype =
|
|
case dtype of
|
|
Plain -> "text/plain"
|
|
Markdown -> "text/markdown"
|
|
Html -> "text/html"
|
|
|
|
download_ext : DownloadType -> String
|
|
download_ext dtype =
|
|
case dtype of
|
|
Plain -> "txt"
|
|
Markdown -> "md"
|
|
Html -> "html"
|
|
|
|
build_license : DownloadType -> List Module -> String
|
|
build_license dtype modules =
|
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!"
|
|
|
|
download_license : DownloadType -> List Module -> Cmd msg
|
|
download_license dtype modules =
|
|
Download.string
|
|
("LICENSE." ++ (download_ext dtype))
|
|
(download_mime dtype)
|
|
(build_license dtype modules)
|